コンパイルして正常に実行するためにg773.2.xを必要とするレガシー+アカデミック+数値のFortran-77コードを使用しています...RedHat Linux 9fori386でそのコンパイラーを使用しています
それらのfortran-77ファイルの1つは、ローカル変数として実数、整数、および倍精度の配列を多数含むサブルーチンを定義しています...次を使用してコンパイルした場合:
$ g77 -c thefile.F -o thefile.o
サイズが約10kBのオブジェクトファイルを生成します...ただし、次のようになります。
$ g77 -finit-local-zero -c thefile.F -o thefile.o
サイズ14MBのオブジェクトファイルを生成します
オブジェクトファイルを作成してみstrip
ましたが、サイズはあまり変わりません
コード内のそのようなファイルが数十個あり、実行可能バイナリのサイズは200MBになります。
何が起こっているのかについて何か考えはありますか?さらに重要なことに、オブジェクト/バイナリのサイズを正常に戻すにはどうすればよいですか?
PS:200MBのバイナリをtar.gzに圧縮したとき、tarballは1 MB未満でした...おそらく200MBが0か何かでいっぱいであることを意味します(16進エディターで開くことができますが、私はあまりにも怠惰な感じです今)
PS:コンパイラの詳細を以下に示します(g77の-vフラグを使用)
$ g77 -v -finit-local-zero -c thefile.F -o thefile.o
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --host=i386-redhat-linux
Thread model: posix
gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/tradcpp0 -lang-fortran -v -D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=2 -D__GXX_ABI_VERSION=102 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux -D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__NO_INLINE__ -D__STDC_HOSTED__=1 -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__ thefile.F /tmp/ccXXvzMA.f
GNU traditional CPP version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/f771 /tmp/ccXXvzMA.f -quiet -dumpbase thefile.F -version -finit-local-zero -o /tmp/cck0Blw1.s
GNU F77 version 3.2.2 20030222 (Red Hat Linux 3.2.2-5) (i386-redhat-linux)
compiled by GNU C version 3.2.2 20030222 (Red Hat Linux 3.2.2-5).
as -V -Qy -o thefile.o /tmp/cck0Blw1.s
GNU assembler version 2.13.90.0.18 (i386-redhat-linux) using BFD version 2.13.90.0.18 20030206
編集:新しいg77 / gfortranバージョンにはその問題はありません(オブジェクトファイルのサイズは-finit-local-zeroとほぼ同じです)が、それらを使用することはできません(最新のコンパイラバージョンでコードが正しい結果を生成するようにすることはプロジェクト自体)...そして-finit-local-zeroフラグが必要です(コードはそれなしでハングします)
編集2:16進ダンプを取得しましたが、ファイルの99%がゼロで構成されていることを確認してください。