给QT工程 pro文件添加zmq的项目lib时,编译出现:

:-1: error: cannot find /opt/toolschain/zeroMQ/zeromq_gcc/lib: file format not recognized

原因是qt无法识别lib目录下的部分lib库文件格式

可以使用“ll”或者“ls -al”命令查看文件的指向类型

从图中可以看出libzmq.so.5.0.0是libzmq.so和libzmq.so.5的软连接

所以libzmq.so.5.0.0是非.so文件,所以qt在加载lib目录时会把目录下的所有文件当成lib文件,不会以后缀名。

它是一个描述文件,和la一样,la是libtool生成的描述文件,用于描述告诉GNU的编译器该在不同的平台下使用或生成不同的静态库以及动态库,因为不同的平台,所使用的库格式不同。

所以我们只需要把libzmq.so.5.0.0删除还有libzmq.la,同时pkgconfig是生成的配置目录,也可以删除

这样就可以完美编译通过了。

 

值得注意的是,如果你的库目录下的库文件是32位的,你的qt程序是64位的那么也是无法通过的也会报这个错误

如果不想删除软连接,可以直接在pro文件里把.so文件路径给出来就可以了:

LIBS += /opt/toolschain/zeroMQ/zeromq_gcc/lib/libzmq.so

 

lib目录下只包含lib文件,其余的不要包含!

Logo

更多推荐