使用qmake生成Makefile时提示找不到-lQtCore的问题求助
问题描述
我是qmake新手,尝试为包含hello.c、hello.h、main.c的简单项目用qmake生成Makefile,编写的.pro文件内容如下:
SOURCES += hello.c SOURCES += main.c CONFIG += console HEADERS += hello.h TARGET = helloworld QT -= gui
执行make时出现错误:
Can't find -lQtCore
执行ld -lQtCore --verbose,得到如下结果:
attempt to open //usr/x86_64-redhat-linux/lib64/libQtCore.so failed attempt to open //usr/x86_64-redhat-linux/lib64/libQtCore.a failed attempt to open //usr/lib64/libQtCore.so succeeded -lQtCore (//usr/lib64/libQtCore.so) libpthread.so.0 needed by //usr/lib64/libQtCore.so found libpthread.so.0 at //usr/lib64/libpthread.so.0 libz.so.1 needed by //usr/lib64/libQtCore.so found libz.so.1 at //usr/lib64/libz.so.1 libdl.so.2 needed by //usr/lib64/libQtCore.so found libdl.so.2 at //usr/lib64/libdl.so.2 libgthread-2.0.so.0 needed by //usr/lib64/libQtCore.so found libgthread-2.0.so.0 at //usr/lib64/libgthread-2.0.so.0 libglib-2.0.so.0 needed by //usr/lib64/libQtCore.so found libglib-2.0.so.0 at //usr/lib64/libglib-2.0.so.0 librt.so.1 needed by //usr/lib64/libQtCore.so found librt.so.1 at //usr/lib64/librt.so.1 libstdc++.so.6 needed by //usr/lib64/libQtCore.so found libstdc++.so.6 at //usr/lib64/libstdc++.so.6 libm.so.6 needed by //usr/lib64/libQtCore.so found libm.so.6 at //usr/lib64/libm.so.6 libgcc_s.so.1 needed by //usr/lib64/libQtCore.so found libgcc_s.so.1 at //usr/lib64/libgcc_s.so.1 libc.so.6 needed by //usr/lib64/libQtCore.so found libc.so.6 at //usr/lib64/libc.so.6 ld-linux-x86-64.so.2 needed by //usr/lib64/libQtCore.so found ld-linux-x86-64.so.2 at //usr/lib64/ld-linux-x86-64.so.2 libpcre.so.1 needed by //usr/lib64/libgthread-2.0.so.0 found libpcre.so.1 at //usr/lib64/libpcre.so.1 ld: warning: cannot find entry symbol _start; not setting start address
已在.pro文件中添加INCLUDEPATH += /usr/lib64,但问题仍未解决,请问这是什么原因?
解决方法
- 修正路径配置错误
你添加的INCLUDEPATH += /usr/lib64是用来指定头文件搜索路径的,而链接器找不到库文件需要配置的是库文件搜索路径。把这行替换为:
QMAKE_LIBDIR += /usr/lib64
QMAKE_LIBDIR是qmake专门用来指定额外库搜索目录的变量,会让生成的Makefile告诉链接器去这个目录找库。
- 检查Qt版本匹配问题
从ld的输出看,系统里确实存在libQtCore.so,但要注意:
- 如果你的系统装的是Qt5,库文件名实际是
libQt5Core.so,这种情况下需要确保qmake是Qt5版本的(比如用qmake-qt5命令),或者在.pro文件里明确指定链接:LIBS += -lQt5Core - 如果用的是Qt4,
libQtCore.so是正确的,但要确认qmake指向的是Qt4的版本。
- 重新生成Makefile并编译
修改完.pro文件后,删除原来的Makefile,重新执行qmake生成新的配置文件,再运行make即可。
内容的提问来源于stack exchange,提问作者panpan wang
相关产品推荐
相关产品推荐

