You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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,但问题仍未解决,请问这是什么原因?

解决方法
  1. 修正路径配置错误
    你添加的INCLUDEPATH += /usr/lib64是用来指定头文件搜索路径的,而链接器找不到库文件需要配置的是库文件搜索路径。把这行替换为:
QMAKE_LIBDIR += /usr/lib64

QMAKE_LIBDIR是qmake专门用来指定额外库搜索目录的变量,会让生成的Makefile告诉链接器去这个目录找库。

  1. 检查Qt版本匹配问题
    从ld的输出看,系统里确实存在libQtCore.so,但要注意:
  • 如果你的系统装的是Qt5,库文件名实际是libQt5Core.so,这种情况下需要确保qmake是Qt5版本的(比如用qmake-qt5命令),或者在.pro文件里明确指定链接:
    LIBS += -lQt5Core
    
  • 如果用的是Qt4,libQtCore.so是正确的,但要确认qmake指向的是Qt4的版本。
  1. 重新生成Makefile并编译
    修改完.pro文件后,删除原来的Makefile,重新执行qmake生成新的配置文件,再运行make即可。

内容的提问来源于stack exchange,提问作者panpan wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:54:55