静的にリンクされた実行可能ファイルにコンパイルしたい C と Fortran で書かれたコードがあります。-fno-underscoring
( gfortranのオプションを使用して) コードを動的にコンパイルすると、すべて正常に動作します。ただし、これを .so ファイルにリンクし、必要なライブラリのほとんどを静的にリンクしてから、このブログ投稿libkrb5
で説明されている方法と非常によく似た方法で に動的にリンクしたいと考えています。
前回のブログ投稿の手順に従い、問題なく .so ライブラリをコンパイルできました。nm
Fortran サブルーチンと C 関数が表示されており、良好な状態であることを示しています。
[...]001020b9 T turnover
[...]000d31ea T initio
最初の関数は Fortran で、2 番目の関数は C で記述されています。これらにはアンダースコアなどがないため、リンクする必要があります。私のメイン プログラム (Fortran) は、他の Fortran ソース ファイルと同じようにコンパイルされています。ただし、リンクしようとすると、エラーが発生します。
gfortran -m32 main_program.o -o program_static -L./ -llibname -lkrb5 -lgssapi_krb5 -lsasl2 -lgfortran
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o: In function `_start':
/build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:115: undefined reference to `main'
collect2: ld が 1 つの終了ステータスを返しました
ではmain_program.o
、
00000000 T MAIN__
すべてが順調に見えるのに、リンクしていないのはなぜですか?