buildroot编译和使用
buildrooot的编译
buildroot是一款集成的编译集合包,解决了以前交叉编译麻烦的问题。
首先,我们可以从buildroot的官网下载压缩包。https://buildroot.org/downloads/
建议最新的包,试过比较老的版本,好像编译过程中下载一些旧版本的文件,下载速度特别慢,就算挂上了梯子也无济于事。
下载过来解压之后,我们首先进行清理,有时候我们用的不是全新的包,而是别人编译好的包,我们重新进行编译,这个时候会报很多奇奇怪怪的错误.
cd buildroot
make clean
然后我们进行一些配置,
make menuconfig
这里我就盗一下图,哈哈哈,
选择 Target options—>Target Architecture (MIPS (little endian)),配置 Target Architecture 为 MIPS (little endian),Target Architecture Variant 则会自动配置为 (Generic MIPS32)
因为龙芯基本都是小端,所以我们选择little endian.
然后按两次esc返回主界面**,选择 “Toolchain”, 将 “kernel headers” 改成 机器环境的Kernel版本**(即改为编译当前Buildroot的主机内核版本)。可以在主机上通过uname -r 或者cat /proc/version 查看当前主机的内核版本。注意,一定要注意,这里的内核版本指的是你目前这台机子的内核版本,而不是龙芯跑的linux的内核版本,不要弄错,当初自以为的就弄错了.
执行 ./configure 命令根据设置的配置参数生成编译需要的Makefile文件。
./configure
最后就可以make了,这里有一个小技巧,就是make可以带一些参数,例如:
make -j8
-j参数指的是,多线程编译,后面的数字则是线程数,按理来说,在一定合适范围内,线程越多,编译速度越快(据机子配置而定).如果有靠谱的梯子,基本上几十分钟就可以完成编译了.
最后提醒一句:编译过程中要保持联网,切记!!
buildroot的使用
编译完成后,我们可以在在 /buildroot/output/host/usr/bin目录下找到我们的mipsel-linux-gcc这个编译器,我们首先要验证编译器是否正常:
cd buildroot/output/host/usr/bin
./mipsel-linux-gcc --version
查看编译器版本
然后我们就可以通过mipel-linux-gcc来代替我们的gcc,通常我们是通过make来实现自动化编译,所以我们还要对makefile文件进行修改,修改每个Makefile,在头部将
$cc=gcc
修改为
$cc=mipsel-linux-gcc
更方便的使用:
同时,make工具使用的同时,需要调用mipsel-linux-gcc,所以我们还需要将mipsel-linux-gcc添加进系统环境变量,详情建议参考这篇文章:
添加linux系统环境变量(永久/临时)
最后
我在编译helloworld文件的时候,发现单单编译完还不能用,为了避免在某些老久系统里通常缺失一些常用库,所以我建议运行编译命令时,为了让生成的二进制程序 hello 不依赖动态库,在编译选项中加入 “-static”,如
./mipsel-linux-gcc -o ./code/hello ./code/hello.c -static
静态编译的程序会大一些,不过,不用再担心链接库的问题了.
祝,未来一切顺利,万事舒心!
buildroot编译和使用相关推荐
- buildroot 编译问题
buildroot 编译的时候,出现 g++: internal compiler error: Killed (program cc1plus) 这个是因为虚拟机内存不足的原因, 加上一些内存即可 ...
- buildroot 编译qt ERROR: Feature ‘xxxxx‘ was enabled, but the pre-condition ‘YYYYY‘ ‘ZZZZZ‘ failed
遇到buildroot编译qt,configure时出错ERROR: Feature 'xxxxx' was enabled, but the pre-condition 'YYYYY' && ...
- Buildroot 编译Tips
编译最小系统 默认情况下,buildroot 都会编译第三方依赖库,耗费很久,如何编译五脏俱全的固件呢,它也提供了相关命令 加载默认配置文件,make xxx_defconfig 不编译第三方库, m ...
- X2000 halley5开发板,buildroot编译image
使用君正提供的SDK 1. 执行token.sh脚本,安装必要工具包 sudo apt-get install -y g++sudo apt-get install -y autopointsudo ...
- buildroot 编译项目出现的一些error
[Makefile:3547: libgio_2_0_la-gdbusauth.lo] Error 1 error gdbusauth.c: In function '_g_dbus_auth_run ...
- SAM9X60 curiosity开发板,buildroot编译sdcard.img
参考Microchip官方视频,操作 不同的buildroot版本,在dl目录下载的软件包版本不同,可能会引起不同的编译过程,出错等 1. 下载buildroot,按照视频教程buildroot章节下 ...
- Buildroot编译树莓派教程
下载源码 wget https://buildroot.uclibc.org/downloads/buildroot-2016.11.2.tar.gz 解压 tar -xvf buildroot-20 ...
- 003 使用buildroot编译树莓派zero w内核与根文件系统
前言 我打算用树莓派为平台做一个linux驱动与应用开发的系列分享,这里先从制作内核和文件系统开始吧! 后面每个知识点我尽量单独拿出来分享,方便搜索 环境 主机:Ubuntu20.04 平台:树莓派z ...
- buildroot编译出错(2020-09-27)
开发主机:Linux fly-vm 4.15.0-118-generic #119~16.04.1-Ubuntu SMP Tue Sep 8 14:54:40 UTC 2020 x86_64 x86_ ...
最新文章
- sgi---1 vector
- 834 树中距离之和
- Spring webflow:上传多个文件
- java 集成 kafka 0.8.2.1 适配jdk1.6
- 游戏建模用什么软件,学游戏建模哪里好?
- .netcore excel导出回车换行_必须掌握的回车键Enter应用技巧,100%干货
- 操作系统知识点大总结【进程同步与互斥】
- 无人驾驶(如何自己构建hdmap)
- 4.创建并调用自动控制器(api)
- 百度深度学习工程师认证(已通过)
- 资产标签二维码方案设计
- 百度地图开发 —— 去除百度地图左下角Logo
- ocelot和nginx比较_针对 Ocelot 网关的性能测试
- TensorFlow 2.9的零零碎碎(五)-模型编译
- php js sdk 签名算法,签名算法 · PAYJS API 开发文档
- 算法:Smith数问题
- LeetCode 1.Minimum Path Sum 2.Unique Paths I and II
- 2011年B题交通巡警第一问的练习与实现
- 甜甜C语言——sscanf()函数
- 华尔街日报专访李彦宏:明年年底前,百度将打造一辆无人公车