0

私は共有ライブラリをビルドしてインストールし、特に-finstrument-functionsgcc のスイッチを使用して、コード インストルメンテーションを介してプロジェクトのプロファイリングを行いました。

コンパイラのスイッチでインストルメンテーションのオンオフができるので、再設定するだけでプロファイリングライブラリへの依存関係をオンオフできるようにしたいです。

configure の CFLAGS 経由で gccに渡すことができますが、LDFLAGS 経由で渡そ-finstrument-functionsうとすると-lmylibconfigure が失敗します

configure:2796: checking whether we are cross compiling
configure:2804: gcc -o conftest -g -Wall -Wextra -Werror  -lmylib conftest.c  >&5
configure:2808: $? = 0
configure:2815: ./conftest 
./conftest: error while loading shared libraries: libmylib.so.0: cannot open shared object file: No such file or directory

ファイルが存在します。二重チェックを行い、ダミーの例をコンパイルしてリンクすると、期待どおりに機能します。

興味深いことに、代わりに共有ライブラリへのフル パスを渡すと-lmylibエラーが持続しますが、対応する静的ライブラリへのフル パスを渡すと、configure がスムーズに実行され、すべてが期待どおりにビルドされます。

一言で言えば私の質問: オプションの共有ライブラリを、configure.ac を変更せずに autotools によって生成された構成スクリプトに渡す可能性はありますか?

ありがとう、アンディ

4

2 に答える 2

1

ライブラリがコンパイラのデフォルトのライブラリ検索パスにないようです。スイッチをLDFLAGS使用してライブラリ検索パスを渡すこともできます。-L

CFLAGS=-finstrument-functions LDFLAGS="-lmylib -L/path/to/mylib" ./configure ....
于 2013-07-11T04:23:25.667 に答える
1

実行することで修正sudo ldconfig

他の誰かが同じ問題を抱えている場合に備えて、ここに残しておきます。

于 2013-07-11T04:32:13.997 に答える