使 Qt 应用程序在 fedora 20 上失败:/usr/bin/ld: 找不到 -lGL

Posted

技术标签:

【中文标题】使 Qt 应用程序在 fedora 20 上失败:/usr/bin/ld: 找不到 -lGL【英文标题】:make Qt application fails on fedora 20 : /usr/bin/ld: cannot find -lGL 【发布时间】:2014-11-17 04:38:36 【问题描述】:

我在这里关注example。 这是我为 make 得到的输出

admin@localhost qtest$ make
g++ -Wl,-O1 -Wl,-rpath,/home/admin/Qt/5.3/gcc_64 -Wl,-rpath,/home/admin/Qt/5.3/gcc_64/lib -o qtest qtest.o   -L/home/admin/Qt/5.3/gcc_64/lib -lQt5Gui -lQt5Core -lGL -lpthread 
/usr/bin/ld: cannot find -lGL
collect2: error: ld returned 1 exit status
make: *** [qtest] Error 1
admin@localhost qtest$ 

我的cpp文件是这个

#include <QtWidgets/qapplication.h>
#include <QtWidgets/qpushbutton.h>

int main( int argc, char **argv )

    QApplication a( argc, argv );

    QPushButton hello( "Hello world!", 0 );
    hello.resize( 100, 30 );
    hello.show();
    return a.exec();

关于如何解决此问题的任何建议?

更新

这就是我得到的结果

 sudo yum install mesa-libGL-devel -y

再次尝试构建:

admin@localhost qtest$ make
g++ -Wl,-O1 -Wl,-rpath,/home/admin/Qt/5.3/gcc_64 -Wl,-rpath,/home/admin/Qt/5.3/gcc_64/lib -o qtest qtest.o   -L/home/admin/Qt/5.3/gcc_64/lib -lQt5Gui -lQt5Core -lGL -lpthread 
qtest.o: In function `main':
qtest.cpp:(.text.startup+0x22): undefined reference to `QApplication::QApplication(int&, char**, int)'
qtest.cpp:(.text.startup+0x4f): undefined reference to `QPushButton::QPushButton(QString const&, QWidget*)'
qtest.cpp:(.text.startup+0x74): undefined reference to `QWidget::resize(QSize const&)'
qtest.cpp:(.text.startup+0x7c): undefined reference to `QWidget::show()'
qtest.cpp:(.text.startup+0x81): undefined reference to `QApplication::exec()'
qtest.cpp:(.text.startup+0x8c): undefined reference to `QPushButton::~QPushButton()'
qtest.cpp:(.text.startup+0x94): undefined reference to `QApplication::~QApplication()'
qtest.cpp:(.text.startup+0xab): undefined reference to `QApplication::~QApplication()'
qtest.cpp:(.text.startup+0xbe): undefined reference to `QPushButton::~QPushButton()'
qtest.cpp:(.text.startup+0xce): undefined reference to `QPushButton::~QPushButton()'
collect2: error: ld returned 1 exit status
make: *** [qtest] Error 1

【问题讨论】:

【参考方案1】:

解决您的错误:

/usr/bin/ld: 找不到-lGL

您应该通过以 root 身份运行以下安装命令或使用 sudo 来安装缺少的 mesa 包:

sudo yum install mesa-libGL-devel -y

【讨论】:

【参考方案2】:

打开你的 foo.pro 文件。

你可能有类似的东西:

######################################################################
# Automatically generated by qmake (3.0) Mon Nov 17 14:00:29 2014
######################################################################

TEMPLATE = app
TARGET = test
INCLUDEPATH += .

# Input
SOURCES += foo.cpp

在顶部添加“QT += 小部件”,这样您的文件现在显示为:

######################################################################
# Automatically generated by qmake (3.0) Mon Nov 17 14:00:29 2014
######################################################################

QT += widgets

TEMPLATE = app
TARGET = test
INCLUDEPATH += .

# Input
SOURCES += foo.cpp

然后运行qmakemake。这应该允许它找到相关的标题。

您的第二个错误不是库,而是查找 Qt 的 QtCore 和 QtWidgets 模块。

【讨论】:

以上是关于使 Qt 应用程序在 fedora 20 上失败:/usr/bin/ld: 找不到 -lGL的主要内容,如果未能解决你的问题,请参考以下文章

在 fedora 21 上使用自编译 OpenSSL 编译比特币

Fedora13中kde和qt在哪里

rpm 签名验证在 CentOS 上失败,在 Fedora 上工作

Qt - Linux 上的 Spinbox 外观(gnome)

如何安装fedora20

如何解决在fedora上安装xampp的问题?