2

サンプル C プログラムをコンパイルし、次を使用していくつかの静的ライブラリ ファイルにリンクしようとしています。

gcc -I /usr/local/include -L /usr/local/lib -l libsundials_cvode.a -l libsundials_nvecserial.a cvRoberts_dns.c -o cvRoberts_dns.o

(上記のライブラリ ファイルとインクルード ファイルのディレクトリは正しいと確信しています。)

私が得るエラーは次のとおりです。

/usr/bin/ld: cannot find -llibsundials_cvode.a
collect2: ld returned 1 exit status

2 つの質問があります。

1) -L および -l オプションを正しく使用していますか?

2) 上記のエラーは、b/c gcc が間違った場所でライブラリ ファイルを探しています。$LD_LOAD_PATHターミナル経由で に設定して、これを修正しようとしました/usr/local/bin。上記のエラーがまだ発生します。これを修正するにはどうすればよいですか?

ありがとう!

-ローハン。

4

1 に答える 1

4

代わりに -lsundials_cvode を試してください - 「lib」と「.a」の部分を削除してください

LD_LOAD_PATH は、コンパイル時ではなく、実行時に動的ライブラリを見つけるためのものであることに注意してください。

編集:

I just tried that. The change addresses the cannot find library error but 
now I am faced with many "undefined reference to" errors. Does this mean 
the linking of the library files has failed somehow? How do I correct this? 

これは、リンクしたライブラリにない、解決する必要がある他のシンボルがあることを意味します。両方のライブラリを変更する必要があることに注意してください (コマンド ラインに 2 つあります)。また、順番が間違っている可能性もあります。

于 2012-11-20T23:01:39.947 に答える