Yocto Toolchain编译busybox
2017-01-23 09:15
1006 查看
1、在官网https://busybox.net下载最新源码1.26.2;
2、先导入环境变量:
. /opt/fsl-imx-fb/4.1.15-1.2.0/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
3、cd到busybox的源码文件夹busybox-1.26.2,配置编译选项$make menuconfig:
Busybox Settings --->Cross Compiler prefix(回车),填入arm-poky-linux-gnueabi-
退出保存,$make,会有找不到头文件的报错:
In file included from /opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/i686-pokysdk-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.2.0/include-fixed/syslimits.h:7:0,
from /opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/i686-pokysdk-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.2.0/include-fixed/limits.h:34,
from include/platform.h:141,
from include/libbb.h:13,
from include/busybox.h:8,
from applets/applets.c:9:
/opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/i686-pokysdk-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.2.0/include-fixed/limits.h:168:61:error: no include path in which to search for limits.h
In file included from include/libbb.h:13:0,
from include/busybox.h:8,
from applets/applets.c:9:
include/platform.h:152:23: fatal error: byteswap.h: No such file or directory
compilation terminated.
make[1]: *** [applets/applets.o] Error 1
make: *** [applets_dir] Error 2
可以看到提示说找不到一些标准的头文件,其实这个是因为我们没有添加一些指定的选择来告诉其使用byteswap.h,所以默认的去查找byteswap.h。
要在make menuconfig中相应的选项中指定路径:
![](http://img.blog.csdn.net/20170123103258546?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcmVhZG5hcA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
其中最为核心的是sysroot这个选项,这个选项将告诉toolchian去哪里查找库与头文件,而如果不指定这个,那么就会出现问题。
4、$make&&make install后,会生成_install文件夹,其中包含link到busybox的所有工具,替换到rootfs中即可。
*另:
在本地项目中直接用yotco的toolchain编译,将Makefile.Rules的CROSS_COMPILE指定到yocto的toolchain:
CROSS_COMPILE = /opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/i686-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-
直接make也会报一些找不到标准头文件的错:
fatal error:unistd.h: No such file or directory
compilation terminated.
也是在编译选项中没指定路径的问题,修改如下(红色字体):
CXX = $(CROSS_COMPILE)g++
--sysroot=/opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi
CC = $(CROSS_COMPILE)gcc --sysroot=/opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi
LINK = $(CROSS_COMPILE)g++ --sysroot=/opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi
参考:
http://blog.csdn.net/sy373466062/article/details/50388222
2、先导入环境变量:
. /opt/fsl-imx-fb/4.1.15-1.2.0/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
3、cd到busybox的源码文件夹busybox-1.26.2,配置编译选项$make menuconfig:
Busybox Settings --->Cross Compiler prefix(回车),填入arm-poky-linux-gnueabi-
退出保存,$make,会有找不到头文件的报错:
In file included from /opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/i686-pokysdk-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.2.0/include-fixed/syslimits.h:7:0,
from /opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/i686-pokysdk-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.2.0/include-fixed/limits.h:34,
from include/platform.h:141,
from include/libbb.h:13,
from include/busybox.h:8,
from applets/applets.c:9:
/opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/i686-pokysdk-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.2.0/include-fixed/limits.h:168:61:error: no include path in which to search for limits.h
In file included from include/libbb.h:13:0,
from include/busybox.h:8,
from applets/applets.c:9:
include/platform.h:152:23: fatal error: byteswap.h: No such file or directory
compilation terminated.
make[1]: *** [applets/applets.o] Error 1
make: *** [applets_dir] Error 2
可以看到提示说找不到一些标准的头文件,其实这个是因为我们没有添加一些指定的选择来告诉其使用byteswap.h,所以默认的去查找byteswap.h。
要在make menuconfig中相应的选项中指定路径:
其中最为核心的是sysroot这个选项,这个选项将告诉toolchian去哪里查找库与头文件,而如果不指定这个,那么就会出现问题。
4、$make&&make install后,会生成_install文件夹,其中包含link到busybox的所有工具,替换到rootfs中即可。
*另:
在本地项目中直接用yotco的toolchain编译,将Makefile.Rules的CROSS_COMPILE指定到yocto的toolchain:
CROSS_COMPILE = /opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/i686-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-
直接make也会报一些找不到标准头文件的错:
fatal error:unistd.h: No such file or directory
compilation terminated.
也是在编译选项中没指定路径的问题,修改如下(红色字体):
CXX = $(CROSS_COMPILE)g++
--sysroot=/opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi
CC = $(CROSS_COMPILE)gcc --sysroot=/opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi
LINK = $(CROSS_COMPILE)g++ --sysroot=/opt/fsl-imx-fb/4.1.15-1.2.0/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi
参考:
http://blog.csdn.net/sy373466062/article/details/50388222
相关文章推荐
- Yocto工具链编译Busybox
- busybox编译报错
- 编译 Android 系统的 arm64 架构版 busybox
- Arm Busybox 1.00-pre10 编译
- linux-裁剪Linux功能,编译/bin/login, busybox编译linux
- busybox1.19.3编译错误解决办法
- [Toolchain]arm-none-linux-gnueabin编译
- 编译busybox 出错
- 编译用于Android的busybox---步骤,问题和解决
- 为tinycolinux创建应用包-toolchain和编译方法
- 交叉编译Busybox,使开发板串口终端ls命令支持显示中文
- 安装编译busybox 替换Linux的命令
- linux编译busybox,uboot,kernel等常用到的命令及出现过的问题
- 构建根文件系统(3)编译、安装Busybox、安装glibc
- 在Linux下为嵌入式Linux内核编译busybox
- 在Leopard中编译搭建非官方iPhone toolchain开发环境并
- 编译 busybox时问题
- 编译busybox提示arm-linux-gcc内容中arm-none-linux-gnueabi-找不到
- 嵌入式开发六:busybox编译根文件系统的一些错误解决办法
- busybox的编译、使用及安装