我正在开发一个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位编译器上编译的。
答案 0 :(得分:0)
使用LIBS
变量链接外部库:
LIBS += -L./../target/usr/lib/ -lfoo
答案 1 :(得分:0)
您需要根据mkspec有条件地添加特定于目标的库。比如说,如果您有仅限Windows的库,则需要将win32: LIBS += ....
添加到项目文件中。
您需要在代码和/或项目文件中添加条件编译,以禁止编译使用桌面上不可用库的代码。或者,添加一个具有库的虚拟实现的源 - 仅编译目标的源。
除非您有特定原因,否则您也不应该使用QMAKE_...
变量 - 它们是qmake的实施细节。直接使用LIBS
和LIBDIR
。