2011-08-08 21 views
1

qmakeとそれが生成するmakeファイルに問題があります。私のプログラムは2つの図書館にリンクする必要があります。 main.proに次のように追加します。QMake GCCとのリンク問題

LIBS += -L lib/somelib1/bin -lsomelib1 -L lib/somelib2/bin -lsomelib2 

私は上記の行をどのように整理するかqmakeはgccにこれを伝えます。

g++ -o programname someobject.o -L lib/somelib1/bin lib/somelib2/bin -lsomelib1 -lsomelib2 

問題はこのように見えるはずです。

g++ -o programname someobject.o -L lib/somelib1/bin -L lib/somelib2/bin -lsomelib1 
-lsomelib2 

GCCは次のエラーを示します。

lib/somelib2/bin: file not recognized: Is a directory 

ありがとうございます。

答えて

2

あなたはフラグと引数の間にスペースを入れないでください。

LIBS += -Llib/somelib1/bin -lsomelib1 -Llib/somelib2/bin -lsomelib2 

それとも

LIBS += -L"lib/somelib1/bin" -lsomelib1 -L"lib/somelib2/bin" -lsomelib2 

そして、なぜあなたの静的/インポート・ライブラリでは、 "bin"ディレクトリ? "lib"ディレクトリには.a個のファイルがあるはずです。

+0

うまくいきました。私は1つのライブラリだけでスペースがあったので、同じものが別のライブラリのために保持されると仮定しました。あなたが静的/輸入コメントの意味をよく理解していない。 – user174084

+0

ライブラリをビルド/インストールするための "通常の"/"標準的な"方法は、静的またはインポートのライブラリ(およびLinuxの '.so's)を' someprefix/lib'に置き、実行可能ファイルまたはWindows DLLの場合は'someprefix/bin'です。最初のディレクトリをリンカに渡し、PATHに2番目のディレクトリを追加します。私はちょうどあなたがDLLに直接リンクしていることを恐れています(うまく動作しますが、上で述べた意味では移植性がありません; Linuxでは通常はリンクしているライブラリが別のディレクトリにあるので、ちょうどここでニックピッキング、それが動作する場合、それを修正しないでください! – rubenvb

+0

乾杯ですが、これらはプロジェクトで構築されている静的ライブラリです。 gitサブモジュールを使ってこれらのライブラリ(私が作ったもの)をインポートしました。これらのライブラリもqtであり、実行可能ファイルにコンパイルされます。 – user174084

-1

ライブラリ検索パスをQMAKE_LIBDIRタグの下に置くことができます。だからあなたのqmakeのファイルが持っているでしょう:

QMAKE_LIBDIR += lib/somelib1/bin lib/somelib2/bin 
LIBS += -lsomelib1 -lsomelib2