Q1 /busybox-1.18.4/scripts/gcc-version.sh: line 11: arm-linux-gcc: command not found
1.問題:/home/ubuntu-mm/HardWare/S3C2440_Board/Linux_uImage/busybox-1.18.4/scripts/gcc-version.sh: line 11: arm-linux-gcc: command not found
2.解決方法:修改Makefile文件
進入busybox目錄
vim Makefile
將ARCH ?= $(SUBARCH) 修改為
ARCH ?= arm
將CROSS_COMPILE ?= 修改為
CROSS_COMPILE ?= arm-linux-
(這里一定要注意的是arm和arm-linux-后面不能有空格,在編譯內核源代碼的時候也一定要注意這個問題)
3. 執行source /etc/profile使編譯器生效
4. make menuconfig配置busybox選項:
a.進入 Busybox Settings à
build Options->
選中 “Build busybox as a static binary”, 靜態鏈接
Cross Compiler prefix (arm-linux-)
Installation Options->
Busybox Installation Prefix (/xxx/rootfs)
該選項表明編譯后的busybox的安裝位置
5.最重要的問題:
一定要用root權限來做busybox和linux kernel的編譯,也就是說在你開發編譯這些文件之前,首先的事情是su
su
passwd:
root@ubuntu:/home/ubuntu-mm/HardWare/S3C2440_Board/Linux_uImage/busybox-1.18.4# make CONFIG_PREFIX=/home/ubuntu-mm/HardWare/S3C2440_Board/Linux_uImage/RootFileSys/rootfs install
這樣進入到root權限之后就沒啥問題了!
Q2 linux-2.6.22.6/Makefile:416: *** mixed implicit and normal rules: deprecated syntax
后面我在Ubuntu Kylin版本下安裝 交叉編譯環境arm-linux-gcc 安裝了libncourses*等內核編譯的庫 安裝了cmake&make
結果在我編譯內核文件和busybox都出現了同樣的錯誤:
linux-2.6.22.6/Makefile:416: *** mixed implicit and normal rules: deprecated syntax

看完博客之后發現可以這樣解決:
1在makefile中將416行代碼(不同的版本有所差異,不夠都在附近)
config %config: scripts_basic outputmakefile FORCE
%config: scripts_basic outputmakefile FORCE
/ %/: prepare scripts FORCE
%/: prepare scripts FORCE
Q3 libstdc++.so.6: cannot open shared object file
改完上面的Q1Q2之后我的編譯還是不能通過,告訴我說缺少了lib32stdc++的庫,錯誤如下:
sudo apt-get install lib32stdc++6
安裝完之后再make就解決了我的問題!!
sudo apt-get install libncurses5-dev
交叉編譯器區別和概念:
https://www.cnblogs.com/xiaotlili/p/3306100.html
busybox編譯錯誤:
https://www.cnblogs.com/softhal/p/5769121.html
根文件系統制作:
https://blog.csdn.net/qq_16777851/article/details/82056774
ramdisk只讀文件系統制作: