Fedora10 マシンにブースト C++ ライブラリが既にインストールされていますが、ホーム フォルダーのどこかに保持している新しいバージョンを使用したいと考えています。g++ で、デフォルト ( /usr/include and /usr/lib64
) ではなく、ホーム フォルダーの場所にあるインクルード ファイルとライブラリ ファイルを使用する必要があります。
さらに言えば、ここで説明されているように、ファイルCPLUS\_INCLUDE\_PATH and LIBRARY\_PATH
で環境変数も宣言しました。~/.bashrc
今、私が走るとき、
g++ -o hello.so -fPIC hello.cpp -shared -lboost_python
プリプロセッサは、ホーム フォルダの場所からインクルード ファイルを使用して、デフォルトの場所を上書きします (CPLUS\_INCLUDE\_PATH
検索パスでの優先順位が高いため)。しかし、リンカーは同じ優先順位規則に従っていないようです。/usr/lib64
最初に検索するのではなく、常にデフォルトの場所から libboost_python.so を使用しますLIBRARY\_PATH
。libboost\_python.so
スイッチで明示的に指定した場合にのみ、ホーム フォルダー内のライブラリにリンクします-L
。これは本当に不便です。