2011-07-18 11 views
11

macportを使ってgcc 4.6をインストールしました。プレフィックスは/opt/localある、と私は期待を受けるパスを含める:Mac OS Xのgcc:MacPortsにインストールされたライブラリをリンクするには?

#include "..." search starts here: 
#include <...> search starts here: 
/opt/local/include/gcc46/c++/ 
/opt/local/include/gcc46/c++//x86_64-apple-darwin10 
/opt/local/include/gcc46/c++//backward 
/opt/local/lib/gcc46/gcc/x86_64-apple-darwin10/4.6.1/include 
/opt/local/include 
/opt/local/lib/gcc46/gcc/x86_64-apple-darwin10/4.6.1/include-fixed 
/usr/include 
/System/Library/Frameworks 
/Library/Frameworks End of search list. 

しかし、/opt/local/libは、ライブラリ検索パスにあるとは思えないので、私は、コマンドライン上のG ++を使用した場合-L/opt/local/libでそれを指定する必要があります。

Library search paths: 
    /opt/local/lib/gcc46/gcc/x86_64-apple-darwin10/4.6.1 
    /opt/local/lib/gcc46 
    /usr/lib 
    /usr/local/lib 
Framework search paths: 
    /Library/Frameworks/ 
    /System/Library/Frameworks/ 

これは、macportsとともにインストールされた他のライブラリの問題です。ライブラリの検索パスに/opt/local/libを追加する簡単な方法はありますか?私はDYLD_LIBRARY_PATHを無駄に設定しようとしました。私はMac OS X 10.6.8を使用しています。

+0

'DYLD_LIBRARY_PATH'はコンパイル時ではなく、実行時に動的に読み込むためのものです。 – Dani

答えて

2

実行ファイルをライブラリに対してダイナミックまたはスタティックにリンクするかどうかによって異なります。 OS Xの下では、あなたがこのようなソース/オブジェクトファイルとしてライブラリを追加します。

Dynamic: g++ -Wall -o myexecutable myfile.cpp /path/to/library.dylib 
Static: g++ -Wall -o myexecutable myfile.cpp /path/to/library.a 

を最良の方法は、例えば、(MacPortsのからインストールすることができます)CMakeのために、ビルドシステムを使用することです。また、ライブラリを見つけるのが非常に簡単になり、クロスプラットフォームの方法でライブラリを作成できます。

export LDFLAGS="-L/opt/local/lib" 

とあなたのプロフィールをリロードするために、端末にsource ~/.profileを実行します。あなたの〜/ .profileに次の行を追加で

+1

私の質問は、gccのライブラリ検索パスに '/ opt/local/lib'を設定する方法です。 GCCは/ opt/localにビルドされているので、私はそれがintであることを期待しています。しかし、それはそうではありません。 – juanchopanza

7

このように、-Lスイッチはgcc/g ++から検出され、自動で使用されます。

+0

どのように建設していますか?私がコマンドラインg ++を使っているだけの場合、この環境変数は効果がありません。 – juanchopanza

+2

LIBRARY_PATH変数を使用する必要があります。 "-L" – hbogert

関連する問題