Mastering Embedded Linux Programming 学习 (一)

一、ubuntu 软件包下载

sudo apt install autoconf automake bison bzip2 cmake \
flex g++ gawk gcc gettext git gperf help2man libncurses5-dev libstdc++6 libtool \
libtool-bin make patch python3-dev rsync texinfo unzip wget xz-utils

二、安装QEMU


qemu-system-arm -machine vexpress-a9 -m 256M -drive file=rootfs.ext4,sd -net nic -net use -kernel zImage -dtb vexpress-v2p-ca9.dtb -append "console=ttyAMA0,115200 root=/dev/mmcblk0" -serial stdio -net nic,model=lan9118 -net tap,ifname=tap0

使用上面的命令创建一个虚拟机

sudo tunctl -u $(whoami) -t tap0

上面的一行命令创建一个名为tap0的网络接口,tunctl命令需要安装一个uml-utilities的软件包

三、安装crosstool-NG

# git clone https://github.com/crosstool-ng/crosstool-ng.git
git clone https://gitee.com/ffbuild/crosstool-ng.git
cd crosstool-ng
git checkout crosstool-ng-1.24.0
./bootstrap
./configure --prefix=${PWD}
make
make install

四、使用crosstool-NG为BeagleBone Black构建工具链

输出支持的工具链

执行完上面的命令之后,使用下面的命令可以列出支持哪些工具链

bin/ct-ng list-samples

显示工具链配置

bin/ct-ng show-arm-cortex_a8-linux-gnueabi

类似的就是在list-samples输出的选项前面加上show-前缀,输出相应工具链的信息
上面的命令输出如下图所示

选择工具链

要选择一个工具链,使用如下的命令就可以指定一个工具链

bin/ct-ng arm-cortex_a8-linux-gnueabi

配置工具链

bin/ct-ng menuconfig

使用上面的命令就可以图形化配置我们的工具链,如下图所示

建议:

  1. Paths and misc options选项下禁用 Render the toolchain read-only
  2. Target options | Floating point选项下选中hardware(FPU)(CT_ARCH_FLOAT_HW)
  3. Target options选项下的Use specific FPU 输入neon

构建工具链

bin/ct-ng build

运行上面的命令就开始为BeagleBone Black构建交叉编译工具链了

不出意外还是出意外了

好家伙,跑了两个多小时,报错了

调试开始

  1. 参考博客下载离线包Linux-交叉编译工具链的制作(crosstool-ng-1.24)
  2. 修改.config文件里面的src路径,把build时需要下载的包手动下载放到文件夹下面就可以了(上面的博客提供的仓库的软件包在2022.11.4日已经更新了,需要重新下载对应版本的)
  3. linux内核源码下载国内源
  4. expat下载国内源
  5. ncurses-6.1下载国内源

    然后就可以build成功了

调试结束

五、使用crosstool-NG为QEMU构建工具链

首先运行

bin/ct-ng distclean

清除之前build留下的内容
后面的步骤和BeagleBone Black构建相同,只需要禁用Paths and misc options下的Render the toolchain readonly就可以了
注意:还需要修改src目录,这样才能找到我们下载好的各种软件源码压缩包

Mastering Embedded Linux Programming 学习 (一)嵌入式交叉编译工具链的构建,基于crosstool-NG相关推荐

  1. Mastering Embedded Linux Programming 学习 (二)在百问网157开发板上,编译构建u-boot

    Mastering Embedded Linux Programming 学习 (二)在百问网157开发板上,编译构建u-boot 一.下载u-boot源码 git clone https://git ...

  2. Mastering Embedded Linux Programming 学习 (五)在百问网157开发板上,解决网络配置问题

    Mastering Embedded Linux Programming 学习 (五)在百问网157开发板上,解决网络配置问题 思考.参考 搜索发现,需要配置设备树,参考这个链接 修改设备树 找到百问 ...

  3. Mastering Embedded Linux Programming 学习 (三)在百问网157开发板上,编译构建linux内核

    Mastering Embedded Linux Programming 学习 (三)在百问网157开发板上,编译构建linux内核 一.下载内核源码 wget http://ftp.sjtu.edu ...

  4. 《Linux学习一》交叉编译工具链的构建工具Crosstool-ng

    索引 (一)下载与安装 (二)使用 (一)下载与安装 1.wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.25.0. ...

  5. 【linux系统如何安装arm交叉编译工具链】

    文章目录 前言 一.arm交叉编译器介绍 命名规则 具体编译器 二.Arm GNU Toolchain安装 总结 前言 本文简要介绍arm交叉编译器及工具链的安装方法 一.arm交叉编译器介绍 命名规 ...

  6. linux centos7 使用 crosstool-ng 构建 交叉编译 工具链 即构建各cpu架构平台的gcc编译器

    简介 crosstool-ng,全称是crosstool Next Generation,即下一代crosstool.crosstool是个交叉编译器的制作工具,但是做的不够好,于是有人(Yann E ...

  7. linux操作系统中添加永久交叉编译工具链

    {//交叉编译工具安装$ tar xvf gcc-4.6.4.tar.xz $ sudo vim /etc/bash.bashrc /* 添加交叉编译工具链的路径到系统脚本在末尾添加export PA ...

  8. Linux在Ubuntu虚拟机安装交叉编译工具链

    1.进入Linaro官网下载ARM交叉编译器工具链. 官网连接如下: https://releases.linaro.org/components/toolchain/binaries/4.9-201 ...

  9. 制定交叉编译工具_配置交叉编译工具链-嵌入式Linux

    注意:使用我们提供的Ubuntu映象文件时,请按照我们的目录结构,手动设置交叉编译工具链以及编译的架构环境变量配置,(建议配置为永久生效),这里我们提供了两种交叉编译工具链,分别是buildroot构 ...

最新文章

  1. Google已占据全球搜索市场75.8%份额
  2. RxSwift ViewModel定义
  3. 雨敲窗python_雨敲窗Python:类
  4. 哇塞!给 IDEA 换个酷炫的主题
  5. [BUUCTF-pwn]——cmcc_pwnme1
  6. aspectj annotation- used in spring
  7. 【ES6基础】Object的新方法
  8. [转]Visual Studio 各版本下载
  9. python支持复数类型以下什么说法是错误的,【Python】专项练习题(1)
  10. 这个为生信学习打造的开源 Python 文字教程真香!!!
  11. 【C++从入门到踹门】第十四篇:二叉搜索树
  12. python程序运行进程、使用时间、剩余时间显示
  13. 组装一台计算机的配置,要不要自己动手组装一台电脑?一文告诉你答案!
  14. 淘宝产品,为什么转化率还是这么低?
  15. 星起航:商品上架完成后抖音店铺该如何运营呢?
  16. 蓝云ERP系统项目笔记——库存预警(9)
  17. 实现月、季度、年的相关数据
  18. 店铺选址的6C评估模型
  19. 化工印染企业高盐废水处理盐纯化/盐资源化
  20. Python计算身份证第18位(校验码)来判断身份证是否输入正确

热门文章

  1. webRTC(linux native层)之video capture流程(十六)
  2. 第四课 SS7产品简介
  3. 计算机网络 Email应用
  4. 雅思备考笔记—阅读篇(PART1)
  5. [Unity3D]子弹旋转移动
  6. 基于RTL8211E的千兆以太网收发verilog程序(已经硬件验证,初学=语法注释较多)
  7. 案例分享 | 纽扣电池石墨片厚度及缺陷检测
  8. 如何理解软件的测试覆盖率?
  9. 信捷PLC如何使用c函数
  10. windows 10 Quick Assist 远程协助工具