2011-08-08 108 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