如何在qmake项目中跳过不兼容的库?

时间:2015-10-08 12:02:52

标签: qt qmake

我正在开发一个Qt 5.3.1 GUI应用程序,以便在imx6处理器(ARM体系结构)上运行,当我在真实目标上运行时,它运行正常。现在,我想在运行Ubuntu的桌面计算机上单独构建和运行GUI应用程序。

我能够正确编译,但是即将部署最终的可执行文件我注意到以下错误:

/usr/bin/ld: skipping incompatible ../../target/usr/lib/foo.so when searching for -lfoo
/usr/bin/ld: cannot find -lfoo

我在Qt文件中引用了这个共享库中的一些函数,因此我无法从.pro文件中删除该库。 我在.pro文件中添加了以下代码来引用上面的库

QMAKE_LIBS += -lfoo
QMAKE_LIBDIR += ../../target/usr/lib/

我在套件上运行:桌面Qt 5.3 GCC 32位,使用Qt Creator 3.1.2。

我试图链接的库是在imx6 32位编译器上编译的。

2 个答案:

答案 0 :(得分:0)

使用LIBS变量链接外部库:

LIBS += -L./../target/usr/lib/ -lfoo

答案 1 :(得分:0)

您需要根据mkspec有条件地添加特定于目标的库。比如说,如果您有仅限Windows的库,则需要将win32: LIBS += ....添加到项目文件中。

您需要在代码和/或项目文件中添加条件编译,以禁止编译使用桌面上不可用库的代码。或者,添加一个具有库的虚拟实现的源 - 仅编译目标的源。

除非您有特定原因,否则您也不应该使用QMAKE_...变量 - 它们是qmake的实施细节。直接使用LIBSLIBDIR