本文主要是介绍解决QT添加外部链接库的“cannot find -libusb-1.0”及error: No rule to make target之类问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近使用QT做一个USB的调试工具,用了libusb的静态链接库,添加链接库过程问题百出,搞了好久没搞好,极度抓狂。最后各种尝试才算把这个坑给填好了,记录一下处理过程。
先看我的问题,首先我是添加libusb的静态库(官网下的,版本是MinGW32下的libusb-1.0.a),在pro文件中右键“添加库”
添加库后,构建整个项目,结果报错
:-1: error: No rule to make target 'F:/TEST/tet/untitled/lib_usb/liblibusb-1.0.a', needed by 'debug\untitled.exe'. Stop.
经过查看,QT在添加库过程不知道什么原因把libusb-1.0.a再加了一个前缀lib
于是将其多出的“lib”的前缀删除
再进行编译,但还是会报错,但这个是另外一个问题了
“:-1: error: cannot find -llibusb-1.0”
提示是找不到llibusb-1.0,这个时候就搞了好久,不知道什么原因。
再看回pro文件的配置项目,感觉也没有什么问题,这些配置也是QT在添加库的时候自动生成的。
后来各种排查,对LIBS关键字按F1查看了帮助,如下解释
大概意思是如果使用unix那套-l(库文件)与-L(库路径)标记方式,qmake会在Windows上正确地处理库
最后一句说 "-l"已经将lib加入,后来查找资料得知,基于unix/linux这种gnu体系生成的库文件都是要lib作为前缀。
那么用"-l"的方式连接库的话,如果"libusb-1.0.a"则表示为" -lusb-1.0 "(注意是-l代替了前缀lib, 后缀.a删除)。
但我的配置QT自动生成的:win32: LIBS += -L$$PWD/lib_usb/ -llibusb-1.0,
真不知道为什么QT会生成这样一个会报错的配置项
于是,更改为
再重新构建工程,成功
其实如果不用-L、-l的方式链接库,其它还有很多的方式可以添加库的,比如像下面也是OK的
接触QT不久,好多内容一知半解,慢慢学了
这篇关于解决QT添加外部链接库的“cannot find -libusb-1.0”及error: No rule to make target之类问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!