加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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-1.20.0.tar.bz2,只要修改buildroot/package/busybox/busybox.mk文件即可,具体修改如下:
#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
         Build system (Legacy)  ---> 
   (smdk2440) U-Boot board name                     // 这里对应uboot配置smdk2440.h
         U-Boot Version (Custom version)  --->
   (2012.04.01) U-Boot version
   (/home/mapfac/Workspace/vision_sdk/jz2440/wbak/u-boot-2012.04.01_jz2440_camera.patch) Custom U-Boot patches

[*] Linux Kernel
         *** Linux kernel in thumb mode may be broken with binutils >= 2.29 ***
         Kernel version (Custom version)  --->
   (3.4.2) Kernel version
   (/home/mapfac/Workspace/vision_sdk/jz2440/wbak/linux-3.4.2_jz2440_alsa.patch) Custom kernel patches 
         Kernel configuration (Using a custom (def)config file)  --->
   (/home/mapfac/Workspace/vision_sdk/jz2440/linux-3.4.2/config_ok) Configuration file path  

⑨手动编译各模块都
编译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.

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有