交叉编译qt5.7可能遇到的问题及解决

11 篇文章 3 订阅

qt5.7交叉编译到arm 一文中,在编译过程中可能会遇到一些问题,在此将一些列了出来:

1.Project ERROR:Unknown module(s) in QT: quick-private

在编译过程中出现错误:
Project ERROR:Unknown module(s) in QT: quick-private
make[2]: *[sub-quickwidgets-make_first-ordered] 错误 3
make[2]:正在离开目录 /home/jason/work/qt-everywhere-opensource-src-5.3.0/qtdeclarative/src'
make[1]: ***[sub-src-make_first] 错误 2
make[1]:正在离开目录
/home/jason/work/qt-everywhere-opensource-src-5.3.0/qtdeclarative’
make: *[module-qtdeclarative-make_first] 错误 2


原因分析:在qt5.7中,quickwidgets模块依赖quick模块,quick模块有依赖openGL,检查配置参数,发现在./configure添加了参数-no -opengl,
所以解决办法是
在./configure去掉参数-no -opengl

提示:类似的问题多半是因为依赖问题,所以在初次编译时,格外需要注意./configure中的配置参数选取,另外即使出现某些个别编译错误,也不一定会失败,安装到板子上试一试,有问题再来一个一个解决。

2.在编译的时候提示:
cannot find –lxxxx就说明是找不到libxxxx.so

把libxxxx.so拷贝到交叉编译工具链的库目录就可以
例如:如果编译触摸屏出现找不到-lts,可以在tslib/lib目录下执行:
sudo cp libts-0.0.so.0.1.1 /usr/local/arm/arm-2014.05/arm-none-linux-gnueabi/libc/thumb2/lib/libts.so
其中/usr/local/arm/arm-2014.05/是我的交叉编译工具链的安装目录。

3.假如make的时候有提示找不到一些库文件:
test.cpp:(.text.startup+0x20):undefined reference to QApplication::QApplication(int&, char**, int)'
test.cpp:(.text.startup+0x64):undefined reference to
QPushButton::QPushButton(QString const&, QWidget*)’
test.cpp:(.text.startup+0x74):undefined reference to QWidget::show()'
test.cpp:(.text.startup+0x78):undefined reference to
QApplication::exec()’
test.cpp:(.text.startup+0x84):undefined reference to QPushButton::~QPushButton()'
test.cpp:(.text.startup+0x8c):undefined reference to
QApplication::~QApplication()’
test.cpp:(.text.startup+0xbc):undefined reference to QPushButton::~QPushButton()'
test.cpp:(.text.startup+0xd8):undefined reference to
QPushButton::staticMetaObject’
collect2: error: ld returned 1 exit status
make: * [test] 错误 1
这里可以在生成的Makefile里添加需要连接的库,本次用到的label或者pushbutton等都是继承的Widget类因此需要添加该类的库:
在makefile的
LIBS = $(SUBLIBS) -L/opt/qt-5.7.0/lib -lQt5Gui -lQt5Widgets -L/opt/tslib/lib-lQt5Core -lpthread
(斜体的为添加部分。添加上-lQt5Widgets)
或者也可以设置环境变量的值SUBLIBS):
export SUBLIBS=-lQt5Widgets (对应上面那个SUBLIBS)
为了不再麻烦,可以在ubuntu下的/etc/profiles里面加上:
export SUBLIBS=-lQt5Widgets
4.在开发板运行过程中,假如运行有提示:
Illegal instruction (非法指令)
这里很可能是因为对芯片的指令集没有选择好,那么在 /qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf文件加入对应的参数,例如
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值