我有一个涉及两个库的项目。我试图将库添加到我的.pro文件中,但是当我编译时,我收到“找不到-lmylib1”。
INCLUDEPATH += ./lib/mylib1 \
./lib/mylib2
LIBS += -L"$$_PRO_FILE_PWD_/lib/mylib1" -lmylib1 \
-L"$$_PRO_FILE_PWD_/lib/mylib2" -lmylib2
目录结构如下。
Myproject.pro
lib (directory)
mylib1 (directory)
mylib1.so
mylib2 (directory)
mylib2.so
最佳答案
为了完成@dave注释,不仅Qt Creator仅搜索名称为“ lib * .so”的文件。这是类UNIX系统上链接器的默认行为。
引用ld链接器的文档:
-larchive
[...] ld将在其路径列表中搜索
指定的每个归档文件出现libarchive.a的次数。在系统上
支持共享库的ld可能还会搜索带有
.a以外的扩展名。具体来说,在ELF和SunOS系统上,ld
将在目录中搜索扩展名为.so的库
搜索一个扩展名为.a的文件。按照惯例,.so
扩展名表示共享库。 [...]这种类型的档案搜索是Unix链接器的标准配置。
因此,如果您的库与lib*.a
或lib*.so
模式不匹配,则预期Qt Creator和链接器都找不到它。