jz2440_buildroot配置编译笔记
(2019-01-13 21:20:06)
标签:
it |
分类: ARM9系列(JZ2440) |
利用buildroot构建rootfs:
https://blog.csdn.net/qq_28992301/article/details/52143398
buildroot配置实例:
http://blog.sina.com.cn/s/blog_14f1cd81a0102xnjs.html
buildroot使用介绍:
http://www.cnblogs.com/arnoldlu/p/9553995.html
buildroot管理uboot+kernel+rootfs:
https://www.cnblogs.com/kent-hu/p/9393513.html
buildroot使用详解:
https://www.cnblogs.com/chencanjian/p/6060448.html
buildroot构建项目(一)---buildroot介绍:
https://www.cnblogs.com/kele-dad/p/8231434.html
①Incorrect selection of kernel headers: expected 3.4.x, got
2.6.x
https://blog.csdn.net/qq_23235811/article/details/79713581
vi
arm-linux-gcc-4.3.2/arm-none-linux-gnueabi/libc/usr/include/linux/version.hs
修改:
//#define LINUX_VERSION_CODE 132634
#define LINUX_VERSION_CODE 197634
②Incorrect selection of the C library
make menuconfig选择glibc
③make menuconfig
BR2_TOOLCHAIN_EXTERNAL_INET_RPC
④ln:
无法创建符号链接'/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/host/arm-buildroot-linux-gnueabi/sysroot/usr/lib':
没有那个文件或目录
mkdir output/host/arm-buildroot-linux-gnueabi/sysroot/usr/lib
-p
⑤make[1]:
进入目录“/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/build/busybox-1.29.3”
/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/unistd.h:203:
error: conflicting types for 'gid_t'
/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/types.h:27:
error: previous declaration of 'gid_t' was here
/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/unistd.h:208:
error: conflicting types for 'uid_t'
解决办法:
#BUSYBOX_VERSION = 1.29.3
#BUSYBOX_SITE = http://www.busybox.net/downloads
BUSYBOX_VERSION = 1.20.0
BUSYBOX_SITE =
/home/mapfac/Workspace/vision_sdk/jz2440/wbak
BUSYBOX_SITE_METHOD = local
BUSYBOX_SOURCE = busybox-$(BUSYBOX_VERSION).tar.bz2
BUSYBOX_LICENSE = GPL-2.0
BUSYBOX_LICENSE_FILES = LICENSE
为了测试这个问题是在编译busybox产生的,可以到buildroot/output/build/busybox-1.20.0/目录下手动配置后,在make编译测一下:
make menuconfig
make
CROSS_COMPILE=/home/mapfac/Workspace/vision_sdk/jz2440/toolchains/arm-linux-gcc-4.3.2/bin/arm-linux-
make
CROSS_COMPILE=/home/mapfac/Workspace/vision_sdk/jz2440/toolchains/arm-linux-gcc-4.3.2/bin/arm-linux-
CONFIG_PREFIX=/home/mapfac/Workspace/vision_sdk/jz2440/busybox_test
install
默认busybox配置文件:
package/busybox/busybox.config
设置busybox配置文件:
/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/build/busybox-1.20.0/jz2440_defconfig
⑥/home/mapfac/Workspace/vision_sdk/jz2440/toolchains/arm-linux-gcc-4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld:
cannot find /lib/libc.so.6 inside
/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/host/arm-buildroot-linux-gnueabi/sysroot
collect2: ld returned 1 exit status
工具链下可以搜索到:
./arm-linux-gcc-4.3.2/arm-none-linux-gnueabi/libc/lib/libc.so.6
make clean解决
⑦busybox 1.20.0 Installing to target
# Use the 'noclobber' install rule, to prevent BusyBox from
overwriting
# any full-blown versions of apps installed by other
packages.
PATH="/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/host/bin:/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/host/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin"
CFLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -Os "
CFLAGS_busybox="" /usr/bin/make -j5
CC="/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/host/bin/arm-linux-gcc"
ARCH=arm
PREFIX="/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/target"
EXTRA_LDFLAGS=""
CROSS_COMPILE="/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/host/bin/arm-linux-"
CONFIG_PREFIX="/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/target"
SKIP_STRIP=y -C
/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/build/busybox-1.20.0
install-noclobber
make[1]:
进入目录“/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/build/busybox-1.20.0”
make[1]: *** 没有规则可制作目标“install-noclobber”。 停止。
make[1]:
离开目录“/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/build/busybox-1.20.0”
make: ***
[package/pkg-generic.mk:319:/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/build/busybox-1.20.0/.stamp_target_installed]
错误 2
解决办法:buildroot/package/busybox/busybox.mk中修改
define BUSYBOX_INSTALL_TARGET_CMDS
# Use the 'noclobber' install rule, to prevent BusyBox from
overwriting
# any full-blown versions of apps installed by other
packages.
#$(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(@D)
install-noclobber
$(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(@D)
install
....
endef
⑧设置uboot、kernel源码路径
由于打算采用本地源码包进行uboot、kernel的编译,在U-boot Version和Kernel
version配置时做了很多尝试都没有成功,最后都采用了Custom version:
[*] U-Boot
[*] Linux Kernel
⑨手动编译各模块都
编译buildroot:
make s3c2440_defconfig
make
编译uboot:
make ARCH=arm
CROSS_COMPILE=/home/mapfac/Workspace/vision_sdk/jz2440/toolchains/arm-linux-gcc-4.3.2/bin/arm-linux-
distclean
make ARCH=arm
CROSS_COMPILE=/home/mapfac/Workspace/vision_sdk/jz2440/toolchains/arm-linux-gcc-4.3.2/bin/arm-linux-
smdk2440_config
make ARCH=arm
CROSS_COMPILE=/home/mapfac/Workspace/vision_sdk/jz2440/toolchains/arm-linux-gcc-4.3.2/bin/arm-linux-
编译kernel:
#!/bin/sh
make
CROSS_COMPILE=/home/mapfac/Workspace/vision_sdk/jz2440/toolchains/arm-linux-gcc-4.3.2/bin/arm-linux-
s3c2440_defconfig
make
CROSS_COMPILE=/home/mapfac/Workspace/vision_sdk/jz2440/toolchains/arm-linux-gcc-4.3.2/bin/arm-linux-
uImage
编译busyroot(进入busyroot目录单独编译):
make menuconfig
make
CROSS_COMPILE=/home/mapfac/Workspace/vision_sdk/jz2440/toolchains/arm-linux-gcc-4.3.2/bin/arm-linux-
make
CROSS_COMPILE=/home/mapfac/Workspace/vision_sdk/jz2440/toolchains/arm-linux-gcc-4.3.2/bin/arm-linux-
CONFIG_PREFIX=/home/mapfac/Workspace/vision_sdk/jz2440/busybox_test
install
结束:
stage 2: creating image
'/home/mapfac/Workspace/vision_sdk/jz2440/buildroot/output/images/rootfs.yaffs2'
[====================================================]
1109/1109 100%
operation complete,
1109 objects in 6942 NAND pages.