我有一个涉及使用两个库的项目。我试图将要包含的库添加到我的.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
答案 0 :(得分:1)
要完成@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和链接器都找不到它。