龙芯2K1000LA移植交叉编译环境以及QT

这篇具有很好参考价值的文章主要介绍了龙芯2K1000LA移植交叉编译环境以及QT。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

嵌入式大赛结束了,根据这次比赛中记的凌乱的笔记,整理了一份龙芯2K1000LA的环境搭建过程,可能笔记缺少了一部分步骤或者错误,但是大致步骤可以当作参考。

一、交叉编译工具链

下载连接:龙芯 GNU 编译工具链 | 龙芯开源社区 (loongnix.cn) 

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

拷贝在Ubuntu下并进行解压。

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

 然后将该目录下的文件拷贝到/opt目录下。

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

将解压好的工具链文件添加到环境变量中,才能在之后编译 Qt 源码时, 对工具链的调用位置准确无误。

1.首先,打开家目录(HOME)下的.bashrc。

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

2.将export PATH=$PATH:/opt/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.2/bin添加到最后一行。一般来说,在终端中执行的路径信息是不会保存的,因此需要通过执行该语句保证下次启动时仍然保存了环境变量。

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

3.然后执行 source ~/.bashrc,使用该语句更新环境配置
4.如果需要确认版本信息,可以执行 loongarch64-linux-gnu-g++ -v语句

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

二、移植QT源码

下载QT5.15.2源码。

下载连接:Index of /archive/qt/5.15/5.15.2

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

拷贝linux-aarch64-gnu-g++ 然后改为linux-loongarch64-g++。 

修改qmake.conf,内容如下:
龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

 然后建立一个sh脚本进行配置,这里没有移植tslib。

./configure -prefix /home/xiaochao/Loongnix/arm-qt  \
-opensource \
-confirm-license \
-release \
-strip \
-shared \
-xplatform linux-loongarch64-g++ \
-optimized-qmake \
-c++std c++11 \
--rpath=no \
-pch \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcanvas3d \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdoc \
-skip qtgamepad \
-skip qtlocation \
-skip qtmacextras \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtwayland \
-skip qtwebengine \
-skip qtwebview \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-make libs \
-make examples \
-nomake tools -nomake tests \
-gui \
-widgets \
-dbus-runtime \
--glib=no \
--iconv=no \
--pcre=qt \
--zlib=qt \
-no-openssl \
--freetype=qt \
--harfbuzz=qt \
-no-opengl \
-linuxfb \
--xcb=no \
--libpng=qt \
--libjpeg=qt \
--sqlite=qt \
-plugin-sql-sqlite \
-recheck-all

主要是修改安装位置和平台的架构 ,就是对QT源码的裁剪。

移植包括tslib配置如下:
 

toconfigure.sh 
./configure -prefix /home/xiaochao/Loongnix/arm-qt \
-opensource \
-confirm-license \
-release \
-strip \
-shared \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-c++std c++11 \
--rpath=no \
-pch \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcanvas3d \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdoc \
-skip qtgamepad \
-skip qtlocation \
-skip qtmacextras \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtwayland \
-skip qtwebengine \
-skip qtwebview \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-make libs \
-make examples \
-nomake tools -nomake tests \
-gui \
-widgets \
-dbus-runtime \
--glib=no \
--iconv=no \
--pcre=qt \
--zlib=qt \
-no-openssl \
--freetype=qt \
--harfbuzz=qt \
-no-opengl \
-linuxfb \
--xcb=no \
-tslib \
--libpng=qt \
--libjpeg=qt \
--sqlite=qt \
-plugin-sql-sqlite \
-I/home/xiaochao/Loongnix/tslib-1.21/arm-tslib/include \
-L/home/xiaochao/Loongnix/tslib-1.21/arm-tslib/lib \
-recheck-all

执行配置

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

在make之前需要修改如下utils.h文件

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

修改如下:

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言 不然会报如下错误:error: #error Target architecture was not detected as supported by Double-Conversion.

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

 具体的解决办法参考如下文章:(2条消息) 龙芯5000编译Qt环境报错_龙芯编译qt_芒果黑的博客-CSDN博客

 出现如下的界面,使用make就可以进行qt源码的交叉编译了。

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

编译完成如下

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

 下面安装时建议使用超级管理员运行,可能会出现权限不够的情况。

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

 安装成功后会在sh文件配置下的目录下生成相应的文件。

 交叉编译出来的QT库有以下目录:

bin  doc examples include  lib  mkspecs  plugins

将交叉编译出来的文件移植到开发板的/lib目录(目录自己定)下,这里其实打包lib和plugins也行的。

交叉编译的可以执行程序在运行时会连接动态库,因此还需要设置在/etc/profile中添加以下环境变量:由于这里并没有移植tslib,配置文件如下

# qt-lib environment variables
export QT_ROOT=/lib/arm-qt
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QT_ROOT/lib/
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=/usr/share/fonts

若移植了tslib,配置文件如下:

# qt-lib environment variables
export QT_ROOT=/lib/arm-qt
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QT_ROOT/lib/
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=/usr/share/fonts
export QT_QPA_GENERIC_PLUGINS=tslib
export LD_PRELOAD=$TS_ROOT/lib/libts.so

完成配置后执行以下命令

source /etc/profile

在虚拟机是使用qmake进行交叉编译生成了Makefile文件,然后直接make完成编译。

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

 龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

 生成的绿色文件即为目标文件,拷贝到开发板上进行测试。

三、交叉编译openssl

配置如下:

#!/bin/sh
OPENSSL_LIBS='-L/home/xiaochao/Loongnix/SSL/arm-ssl/lib -lssl -lcrypto' \
./configure -prefix /home/xiaochao/Loongnix/arm-qt-ssl \
-openssl-linked \
-I/home/xiaochao/Loongnix/SSL/arm-ssl/include \
-L'/home/xiaochao/Loongnix/SSL/arm-ssl/lib -Wl,-rpath=/home/xiaochao/Loongnix/SSL/arm-ssl/lib' \
-opensource \
-confirm-license \
-release \
-strip \
-shared \
-xplatform linux-loongarch64-g++ \
-optimized-qmake \
-c++std c++11 \
--rpath=no \
-pch \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcanvas3d \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdoc \
-skip qtgamepad \
-skip qtlocation \
-skip qtmacextras \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtwayland \
-skip qtwebengine \
-skip qtwebview \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-make libs \
-make examples \
-nomake tools -nomake tests \
-gui \
-widgets \
-dbus-runtime \
--glib=no \
--iconv=no \
--pcre=qt \
--zlib=qt \
--freetype=qt \
--harfbuzz=qt \
-no-opengl \
-linuxfb \
--xcb=no \
--libpng=qt \
--libjpeg=qt \
--sqlite=qt \
-plugin-sql-sqlite \
-recheck-all

报错如下,修改Makefile,删除-m64

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

重新交叉编译qt,添加openssl支持

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

四、opencv安装

从官网下载opencv的源码以及扩展包,然后解压将扩展包放在opencv目录下。

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

 创建 build文件夹, build 为构建文件夹,进入 build 目录下,执行指令 cmake-gui,开始配置 OpenCV 的环境。

cd build
cmake-gui

执行完成后会出现图形化工具 cmake-gui。 如下图
 

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

指定我们源码的所在路径和构目录。按如下图设置,记得修改成个人的路径。再点击 Gen
erate。

选择 Unix Makefiles, 然后选择 Specify options for cross-compiling,再点击 Next。
龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言 填写交叉编译器的路径。

下面就是您配置的信息,可以配置很多项,比如要编译哪些库等都可以在此选择编译或者
不编译。 比如常见的 V4L2 都需要自己打开(V4L2 是处理摄像头类用的)。
龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

 点击 CMAKE,在 CMAKE_EXE_LINKER_FLAGS 处添加上“-lpthread -lrt -ldl”添加这些
是指定依赖库的链接参数。 上面的“-lxx”其中“-l”是大写字母“L”的小写字母“l”,不是
数字“1”。

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

再在 CMAKE_INSTALL_PREFIX 处指定安装目录,如果不指定,它会默认安装到 Ubuntu 系统目录/usr/local 下。再点击关闭。

如果需要编译扩展库,则需勾选NONFREE,并指定扩展库的源码目录中modules目录。如果不需要扩展库,则不需要选择相关项。将其值选择为opencv_contrib目录中的modules目录

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

 龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

到这里我们已经完成配置,现在我们需要生成 Makefile 等文件,我们先点击 Configure,再点击 Generate 就可以生成了,然后退出即可。

然后需要在源码目录 3rdparty/protobuf/src/google/protobuf/stubs/common.
cc 这个文件下第 33 行添加#define HAVE_PTHREAD 宏定义才可以编译的过。具体原因是 HA
VE_PTHREAD 宏定义了 pthread 库。在如下位置添加即可。

 cd .. // 返回 opencv 源码顶层目录
vim 3rdparty/protobuf/src/google/protobuf/stubs/common.cc

龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

 修改完成后,返回于是 build 目录下,可以看到 bulid 目录下已经准备了构建文件。我们直
接输入 make 构建即可。

cd build/
make -j8

报错:
龙芯2K1000LA移植交叉编译环境以及QT,# Linux应用开发,qt,开发语言

这个bug暂时还没解决,于是重新开始交叉编译,这次也没有移植扩展包,然后居然成功了。文章来源地址https://www.toymoban.com/news/detail-683114.html

到了这里,关于龙芯2K1000LA移植交叉编译环境以及QT的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mqtt学习笔记--交叉编译移植(1)

    Mqtt目前在物联网行业的应用比较多,mqtt属于应用层的一个中间件,这个中间件实现消息的订阅发布机制。网上介绍Mqtt的实现原来的比较多,这里不细介绍。 其实在我们之前的产品中,自己也开发的有类似的中间件,除了具有订阅发布的功能,还有一对一通信,在Linux系统里

    2024年02月10日
    浏览(39)
  • LuaJit交叉编译移植到ARM Linux

    Lua与LuaJit的主要区别在于LuaJIT是基于JIT(Just-In-Time)技术开发的,可以实现动态编译和执行代码,从而提高了程序的运行效率。而Lua是基于解释器技术开发的,不能像LuaJIT那样进行代码的即时编译和执行。因此,在运行速度方面,LuaJIT要比Lua快得多。此外,LuaJIT还支持更多的

    2024年02月05日
    浏览(42)
  • json-c交叉编译及库移植

     编译后的文件 json-c交叉编译及库移植资源-CSDN文库 json-c开源库是一个用c实现的解析json字段的库,嵌入式领域比较实用的库。 由于应用程序需要,需要找移植这个json-c库,所以这里对该库的移植做个简单说明 json-c开源库是一个用c实现的解析json字段的库 下载地址 GitHub - j

    2023年04月23日
    浏览(33)
  • libdrm交叉编译并移植到arm开发板

    首先去官网下载源码包 https://dri.freedesktop.org/libdrm/ ,在这里我们选择最新的下载,如下图 下载完成后,开始解压缩,解压缩完成后,进入源码目录,首先创建 install 和 build 目录,然后创建 cross_file.txt 文件,文件内容如下, 然后进入我们刚创建好的 build 目录,执行语句 me

    2024年02月16日
    浏览(104)
  • Linux交叉编译opencv并移植ARM端

    Linux交叉编译opencv并移植ARM端 - 知乎 目标平台为arm7l,此为32位ARM架构,要安装合适的编译器 注意:64位ARM架构的编译器与32位ARM架构的编译器不能通用 opencv的交叉编译工具链在../opencv3.2.0/platforms/linux 路径下,linux文件夹下是一些.cmake文件,对应不同的移植对象,我需要在rv

    2024年02月12日
    浏览(47)
  • RK3588移植-opencv交叉编译aarch64

    注意:本文中的所有配置相关路径都与当前安装的路径有关,需要根据自己的环境进行自行修改!!! OPENCV如果需要ffmpeg视频模块的话,不建议用cmake-gui,有很多bug。建议在ffmpeg相关依赖配置好后使用“问题:”中的cmake命令。 在做yolov5移植rk3588时,由于RKNPU2的example中open

    2024年02月06日
    浏览(51)
  • ubuntu交叉编译Qt-5库并移植ARM开发板

    前言:本文将介绍Qt5源码方式的交叉编译及安装 下载源码包:qt-everywhere-src-5.12.8.tar.xz 官网下载网址:Index of / 依次选择: 【official_releases】 =【qt】 =【5.12】 =【5.12.8】 =【single】 =【qt-everywhere-src-5.12.8.tar.xz】 先解压QT库压缩包出来,并进入解压出来的库目录。 接下来请按以

    2023年04月08日
    浏览(44)
  • 迅为龙芯2K0500开发板-资料目录

    基础资料 01 开发板硬件资料 02_开发及烧写工具 开发资料 03开发所需软件及驱动 04_pmonLinux内核源码 05_内核镜像 06_pmon镜像 07_buildroot文件系统源码镜像 08_测试文件 使用手册 01[北京迅为]iTOP-LS2K0500开发板快速启动手册_v1.0 02[北京迅为]iTOP-LS2K0500开发板快速使用编译环境ubuntu20.

    2024年02月16日
    浏览(60)
  • Tengine 边缘AI计算框架移植RV1126(包括opencv的交叉编译)

    目录 1.编译opencv 2.拷贝SDK源码到虚拟机 3. 拉取TIM-VX代码 4.拉取Tengine源码并配置 编译opencv是为了,在编译Tengine时指定OpenCVConfig.cmake,以便寻找特定的opencv动态库 01.从github拉取opencv源代码 02.在虚拟机安装cmake 04.解压opencv源码,并进入文件 05.新建文件ax620a.toolchain.cmake配置交叉编

    2024年02月08日
    浏览(49)
  • ubuntu交叉编译Opencv-4.2及contrib库并移植ARM开发板

             前言:本文介绍在ubuntu-18.04上交叉编译Opencv-4.2.0,交叉编译工具版本是arm-linux-4.9.0。 安装cmake和cmake-gui: $ sudo apt-get install cmake $ sudo apt-get install cmake-qt-gui 安装依赖库: $ sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libtiff5-dev libswscale-

    2024年02月14日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包