为嵌入式重新编译QT的问题
使用QT多年,在各环境下使用的都是安装版本,为了解决传说中的预编译版本缺少插件的问题,还是准备自行编译QT,根据供应商提供的手册,折腾了两个周的时间,上树爬墙,印象深刻。
编译安装主要是两个步骤:
- 对tslib的编译,这个问题不大,但在之后产生了各种纠结,对这个文件的关键就是:
-
交叉编译
-
静态生成.a文件
-
可以使用file查看文件的状态,确认符合第2步的使用
```
rm -rf /home/xxx/qt-tools/tslib-1.15
验证
pkg-config --cflags tslib # 应该失败
pkg-config --libs tslib # 应该失败
重新编译
cd tslib-1.15
export CC=arm-linux-gnueabihf-gcc
export SYSROOT=/home/xxx/qt-tools/sysroot
./configure \
--host=arm-linux-gnueabihf \
--prefix=/usr \
--enable-static \
--disable-shared \
CC="CC --sysroot=SYSROOT"
make clean
make -j$(nproc)
make DESTDIR=/home/xxx/qt-tools/sysroot install
验证
ls $SYSROOT/usr/lib/libts.a
ls $SYSROOT/usr/include/tslib.h
ls $SYSROOT/usr/lib/pkgconfig/tslib.pc
```
还要确认,以下正常
```
pkg-config --cflags tslib
pkg-config --libs tslib
```
- QT的编译,过程中多次情况是在提示tslib存在问题
```
错误信息: ERROR: Feature 'tslib' was enabled, but the pre-condition 'libs.tslib' failed.
```
在各种验证正常后的各种无奈中,放下了两天,再次拾起问题依旧。
解决方法:
-
厂商提供的编译方式,是原地构建或叫并行构建,生成的临时文件会污染源码,这是查询资料说的,事实证明,两周的时候大部分是耗在这里的;
-
改用影子构建,单独设置一个编译目录,再安装,它居然过了。