为嵌入式重新编译QT的问题

---

使用QT多年,在各环境下使用的都是安装版本,为了解决传说中的预编译版本缺少插件的问题,还是准备自行编译QT,根据供应商提供的手册,折腾了两个周的时间,上树爬墙,印象深刻。

编译安装主要是两个步骤:

1. 对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
   ```

   

2. QT的编译,过程中多次情况是在提示tslib存在问题

   ```
   错误信息: ERROR: Feature 'tslib' was enabled, but the pre-condition 'libs.tslib' failed.
   ```

   在各种验证正常后的各种无奈中,放下了两天,再次拾起问题依旧。

   解决方法:

   1. 厂商提供的编译方式,是原地构建或叫并行构建,生成的临时文件会污染源码,这是查询资料说的,事实证明,两周的时候大部分是耗在这里的;
   2. 改用影子构建,单独设置一个编译目录,再安装,它居然过了。

   

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐