0

私は自分のプログラムをclangで構築しており、そのプログラムは外部ライブラリを使用しています。彼らが提供するバイナリ (/usr/lib/libary.so) を使用してしばらく開発してきましたが、より新しいバージョンに移行したいと考えています。

ソース コードをダウンロードしてビルドすると、インクルード ファイルと新しいライブラリが作成されます (~/library/build ディレクトリ内)。

私のコードをコンパイルするとき、私は使用します

clang++ main.cpp -I ~/library/include -L ~/library/build/lib -llibrary

これには最新のヘッダーが含まれ、正しいライブラリが検索されます (-L フラグがないと、「NewlyIntroducedFunction への未定義の参照」というエラーが表示されるため、正しいライブラリが検索されることがわかっています)。

ただし、a.out を実行しようとすると、次のエラーが表示されます。

./a.out: symbol lookup error: ./a.out: undefined symbol: NewlyIntroducedFunction

ldd on ./a.out を実行すると、次の行が表示されます。

library.so => /usr/lib/library.so

したがって、コンパイル時には正しいライブラリが使用されていますが、実行時にはそうではないと思います。~/library/build を PATH の先頭に追加しましたが、うまくいきませんでした。

見つかった正しいバージョンの library.so を取得するにはどうすればよいですか?

4

1 に答える 1

2

LD_LIBRARY_PATH 変数 (ライブラリ検索パス) が正しくない可能性があります

于 2013-04-27T22:28:01.933 に答える