如何在QtCreator上配置交叉编译工具链



我使用Yocto构建了一个Qt工具链。我安装了它,并设置了运行Yocto生成的脚本的环境变量。

我打开QtCreator并按照以下说明配置交叉编译器套件。我无法构建这个:

#include <QApplication>
#include <QPushButton>

int main(int argc, char **argv)
{    
    QApplication a( argc, argv );    
    QPushButton hello( "Hello world!", 0 );
    hello.resize( 100, 30 );
    hello.show();    
    return a.exec();    
}

得到这个错误:

(.qtversion[qt_version_tag]+0x0):-1: error: undefined reference to `qt_version_tag'

所以我试着这样写:

#include <stdio.h>
int main()
{
   printf("Hello world!n");
   return 0;
}

没关系。但是当我部署到我的目标并尝试运行它时,它不能,因为它没有针对目标体系结构(arm)编译。

helloworld: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ldd

还有一个非常具有指示性的警告:

:-1: warning: "/usr/bin/gcc" is used by qmake, but "/opt/poky/2.1.1/sysroots/i686-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc" is configured in the kit.
Please update your kit or choose a mkspec for qmake that matches your target environment better.

我试图设置mkspec在我的套件配置,但结果是一样的

解决。也许我"撒了谎",说手动设置mkspec也不起作用。那不是真的,是真的。只是我遇到了另一个问题,无法正确测试它。问题是mkspec,它不正确。它指向linux-g++,我修复了它指向适当的mkspec。总之Qt的创造者告诉我他找不到它了!所以这是个bug?第一个问题(编译GUI)也因此得到了解决。

最新更新