2011-08-08 43 views
1

我有一個qmake和它生成的make文件的問題。我的程序需要鏈接到兩個庫。我將它們添加到main.pro中如下。與GCC QMake鏈接問題

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

工作的乾杯。我有一個空間只有一個圖書館,工作,所以我認爲相同的將持有另一個。不確定靜態/導入評論的含義。 – user174084

+0

構建/安裝庫的「常規」/「規範」方式是將靜態或導入庫(和Linux'.so's)放置在'someprefix/lib'中,以及任何可執行文件或Windows DLL的'someprefix/bin'。您將傳遞給鏈接器的第一個目錄,並將PATH添加到第二個目錄。我只是擔心你直接鏈接到DLL(它工作正常,但不具有上述意義上的可移植性;在Linux上,它會中斷,因爲通常鏈接到的庫位於不同的目錄中)。只是在這裏挑剔,如果它有效,不要修復它! – rubenvb

+0

乾杯,但這些都是靜態庫,正在建立與項目。我已經使用git submodules導入了這些庫(我已經制作了這些庫)。這些庫也是qt並被編譯到可執行文件中。 – user174084

-1

您可以嘗試將庫搜索路徑放在QMAKE_LIBDIR標記下。所以,你的qmake的文件將有:

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