自动驾驶开发入门(一)---交叉编译64位Qt5.15 (aarch64)

21 篇文章 0 订阅
8 篇文章 10 订阅

零:准备开发环境

         1、 开发PC安装Ubuntu1804/1604

         2、  安装交叉编译工具链

                工具链一般随开发板提供,各官网也可下载。请按官方文档安装配置。

                NVIDIA Xavier、华为MDC系列、 TI TDA4VM 配置方法大同小异。

一、下载Qt源代码

        建议选择国内镜像,速度较快:

        http://mirrors.ustc.edu.cn/qtproject/official_releases/qt/5.15/5.15.2/single/

在Linux下编译一定要选择后缀名为.tar.xz的压缩包。

二、解压缩

tar -xvf qt-everywhere-src-5.15.2.tar.xz
三、配置

1、在源代码的的根目录创建一个文件:autoconfig.sh,内容如下:

./configure \
-prefix /opt/qt-5.15.2 \
-release \
-opensource \
-skip qtwayland \
-skip qtlocation \
-skip qtscript \
-xplatform linux-aarch64-gnu-g++ \
-sysroot /请替换成工具链中的根文件系统目录/ \
-make libs \
-optimized-qmake \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-pkg-config \
-no-separate-debug-info \
-pch \
-shared \
-qt-libjpeg \
-qt-zlib \
-qt-libpng

        请务必正确配置-sysroot,链接时将从这里查找依赖库。

2、修改qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf,内容如下:

#
# qmake configuration for building with aarch64-linux-gnu-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)


# modifications to g++.conf
QMAKE_CC                = /请替换为交叉编译器目录/aarch64-none-linux-gnu-gcc
QMAKE_CXX               = /请替换为交叉编译器目录/aarch64-none-linux-gnu-g++
QMAKE_LINK              = /请替换为交叉编译器目录/aarch64-none-linux-gnu-g++
QMAKE_LINK_SHLIB        = /请替换为交叉编译器目录/aarch64-none-linux-gnu-g++

# modifications to linux.conf
QMAKE_AR                = /请替换为交叉编译器目录/aarch64-none-linux-gnu-ar cqs
QMAKE_OBJCOPY           = /请替换为交叉编译器目录/aarch64-none-linux-gnu-objcopy
QMAKE_NM                = /请替换为交叉编译器目录/aarch64-none-linux-gnu-nm -P
QMAKE_STRIP             = /请替换为交叉编译器目录/aarch64-none-linux-gnu-strip
load(qt_config)

执行 autoconfig.sh

3、make -j8

4、make install

如果一切顺利,编译后的Qt库将被安装到:

/请替换成工具链中的根文件系统目录/opt/qt-5.15.2

5、安装到开发板

将qt-5.15.2文件打包成qt-5.15.2.tar.gz格式,传到开发板,解压

将解压后的qt-5.15.2/lib目录添加到开发板的LD_LIBRARY_PATH环境量中。

6、写一个demo,放在开发板中运行。

#include <QCoreApplication>
#include <iostream>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    std::cout << "hello from Qt! \n";
    return a.exec();
}

正常情况下,输出如下:


root@my-dev:~# ./demo
hello from Qt!

     也有可能会出现一个小问题:


QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
 

解决办法请参见:解决交叉编译64位Qt5.15中遇到的问题

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值