【linux踩坑】交叉编译程序时,要保持工具链版本一致

这篇具有很好参考价值的文章主要介绍了【linux踩坑】交叉编译程序时,要保持工具链版本一致。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        记录交叉编译qt时踩到的一个坑:工具链版本要保持一致。

工具链是什么

         在电脑端编译开发板上的程序时,需要使用交叉编译器,比如我常用的arm-linux-gnueabi-gcc编译器,就属于arm-linux-gnueabi工具链。这个工具链内包含一系列以arm-linux-gnueabi-开头的软件,比如g++ ar as等等等等,以及其自带的一堆交叉编译时使用的动态库及头文件。

【linux踩坑】交叉编译程序时,要保持工具链版本一致 

       在ubuntu上只需要运行一句apt install gcc-arm-linux-gnueabi,就会把工具链内的这一系列软件,以及头文件动态库全都安装好,这些是一个整体。

版本不同会怎样

        之前我就踩过一个坑,商家提供的一个uboot驱动用交叉编译器6.x版本编译就可用,而我电脑的版本是7.x,uboot内只要启用这个驱动,开发板就会无限重启。

         现在踩了第二个坑,现象是:在电脑端使用arm-linux-gnueabi-gcc动态编译出的程序,在开发板内运行就会报错 文件 not found。

【linux踩坑】交叉编译程序时,要保持工具链版本一致

        因为buildroot在编译rootfs时,使用的不是我上图arm-linux-gnueabi-gcc所属的工具链,两个工具链使用的头文件动态库不同。导致在编译可执行文件时,编译器设置运行时要调用动态库中的xxx,到了在开发板上运行时,却找不到这个xxx。

        同样,如果在交叉编译qt时选用arm-linux-gnueabi工具链,那么用交叉编译出的qmake,去编译自己的qt项目,最后生成的可执行文件会像上面那样,报错not found。

         而要解决这个编译出的程序not found问题的方法有两个:一个是在交叉编译时加-static进行静态编译,就不需要使用开发板上的动态库;另一个,就是使用编译rootfs的那个工具链中的交叉编译器。

设置buildroot用的哪个工具链

         让我们回到buildroot的路径下,输入make menuconfig命令进入设置,进入 > Toolchain下的Toolchain type选项,选择交叉编译器是用内部还是外部的。

【linux踩坑】交叉编译程序时,要保持工具链版本一致

         如果你选择external toolchain,则在> Toolchain下可以设置选用本地安装的工具链,具体设置项这里就不细介绍了(懒得写)

【linux踩坑】交叉编译程序时,要保持工具链版本一致

        如果选择buildroot toolchain,则在后面编译rootfs时,他会自动下载交叉编译器源码,自己编译出一套工具链,然后用这套自制工具链来交叉编译rootfs

         当然,在> Toolchain下可以设置要制作什么版本的工具链。

【linux踩坑】交叉编译程序时,要保持工具链版本一致

        buildroot的自制工具链路径位于  buildroot目录/output/host/usr/bin,后续也可以直接使用这个工具链去编译自己的项目。

【linux踩坑】交叉编译程序时,要保持工具链版本一致

 

交叉编译qt时怎么设置工具链

         确保与buildroot使用的是同一个工具链,否则会因为动态库版本不同导致编译出来的文件直接不可用。

         目前几乎所有qt交叉编译教程其实都会叫你改交叉编译器,只要修改文件qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf内几个变量的值就行。

         比如我想使用buildroot生成的工具链来交叉编译qt,只需要修改成如下即可。(这路径有点长,可以通过加进环境变量的方式省去)

【linux踩坑】交叉编译程序时,要保持工具链版本一致文章来源地址https://www.toymoban.com/news/detail-477502.html

到了这里,关于【linux踩坑】交叉编译程序时,要保持工具链版本一致的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • windows中的qt程序如何进行交叉编译

    这里我使用Qt-Embedded-5.7.0.tar.xz库文件 1、首先查看自己的交叉编译工具版本 使用 which arm-linux-gcc命令查看,我的是5.4.0,如果不是的话可能需要重新安装交叉编译工具   2. 把移植好的 QT 库文件解压到 linux 系统中 sudo tar - xvf Qt - Embedded - 5.7.0.tar.xz - C  / usr / local / 3. 进入到需要

    2024年02月11日
    浏览(49)
  • macOS 13(本机)golang程序交叉编译成 ARM架构

    ## 背景 golang程序(JuiceFS)需要支持ARM64架构,重新编译; 本地环境:macOS:13 ## 操作 安装交叉编译工具: 可以在 /usr/local/bin 找到musl相关的工具命令 Makefile ## 参考 https://saekiraku.github.io/article/18577/ https://liujinye.gitbook.io/openshift-docs/raspberry-pi/macosgolang-bian-yi-arm-huan-jing-gosqlite3-

    2024年01月17日
    浏览(38)
  • 3:Ubuntu上配置QT交叉编译环境并编译QT程序到Jetson Orin Nano(ARM)

       GCC配置同上   最后配置Kits 上面设置完成之后 ,设置Kits 中的Device(这是为了能够直接把项目部署到arm设备上)      点击NEXT之后会出现连接被拒绝,不用担心 ,下面会对其设置密码。 验证arm设置的密码。                 代码: 此代码是抄的别人的,具体是哪位博主的

    2024年02月11日
    浏览(44)
  • 利用逆向工具反编译溯源小程序

    以下为逆向过程工具,下载后无需安装直接使用。 逆向工具使用的是:wxappUnpacker 解密工具使用的是以上工具包中的: 使用PC版微信客户端的小程序模块,查找客户端的文件保存目录 Applet目录即为存放小程序编译包的路径。如果此目录下有多个文件夹无法区分建议把wx开头的

    2024年04月13日
    浏览(33)
  • 【Java可执行命令】(四)反编译工具javap:深入解析应用程序反编译工具javap ~

    javap 是Java开发工具包(JDK)提供的一个命令行工具,用于反编译Java字节码。它旨在帮助开发人员深入了解和分析已编译的Java类文件。 javap 可以将Java类文件解析为易于阅读的文本形式,展示其中的信息以及反编译出类的结构、方法、字段、常量池等信息 。通过阅读和分析这

    2024年02月10日
    浏览(41)
  • 两个小工具反编译微信(PC)小程序源码

            现在微信小程序有很多,但是想自己开发时候遇到技术瓶颈想参考(借鉴)别人小程序怎么办,网上资料又很少,很多坑爹的需要付费。作为搞技术的人直接把小程序反编译是不是更直接,接下来敲小黑板。 我们用到的工具很简单: 1、UnpackMiniApp.exe 2、反编译工

    2024年02月09日
    浏览(37)
  • Linux 系统下 C/C++ 程序编译

    在 Linux 操作系统中, GCC 是一种现代化的编译器集合,它可用于编译多种程序设计语言,包括 C 语言 和 C++ 语言 。 通过使用GCC 编译器,可以编写高效、安全和可靠的程序,对于 C 程序,推荐使用 gcc 进行编译,但对于 C++ 程序,建议使用 g++ 。如果需要构建大规模的 C 程序并

    2024年02月06日
    浏览(72)
  • Linux系统上C程序的编译与调试

    在Linux操作系统(ubuntu)中,打开终端,以管理员root模式登录 1.更新:输入命令 apt update 2.下载vim:输入命令 apt install vim -y 3.下载gcc:输入命令 apt install gcc -y 4.下载g++:输入命令 apt install g++ -y 5.下载make:输入命令 apt install make -y 安装成功: 【例1】输出Hello word! 1.先在进入

    2024年02月07日
    浏览(33)
  • 在Clion开发工具上使用NDK编译可以在安卓上执行的程序

            因为工作需要,我要将一份C语言代码编译成可执行文件传送到某安卓系统里执行。         众所周知,使用ndk编译代码有三种使用方式,分别是基于 Make 的 ndk-build、CMake以及独立工具链。以前进行ndk编程都是使用ndk-build进行的,新建jni目录,编写Android.mk和A

    2023年04月12日
    浏览(36)
  • 如何在Linux环境下用VI编辑器写C程序编译C程序运行C程序

    我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重点说一说如何在Linux环境下用VI编辑器写C程序编译C程序运行C程序。 相信大家在Windows环境下写C程序编译C程序运行C程序怎么弄都已经很清楚了,现在我们来看在Linux下如果来做,不用什么基础,直接跟着我就行了。

    2023年04月25日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包