linux编译freebsd
发布时间:2023-01-14 14:54:51 所属栏目:Linux 来源:
导读: 以纯粹的源码编译交叉编译器,还是头一遭。以往都是利用目标主机上的头文件和库文件作交叉编译linux编译器,比较省力。但是这次尝试编译linux的交叉编译器,着实遇到了一些麻烦。
1. 源码准备,需要下载
1. 源码准备,需要下载
|
以纯粹的源码编译交叉编译器,还是头一遭。以往都是利用目标主机上的头文件和库文件作交叉编译linux编译器,比较省力。但是这次尝试编译linux的交叉编译器,着实遇到了一些麻烦。 1. 源码准备,需要下载: bison m4 gnu make binutils gcc linux-kernel newlib uclibc 2. 由于编译gcc时,需要bison,m4,gnu make,所以首先要将其编译。 随便编译到某个目录,或者/usr/local # set path=(somdir/bin $path) 3. 编译binutils: mkdir b; cd b;../binutils/configure --prefix=/usr/cross/arm-linux --target=arm-elf --disable-nls; make all install 编译并安装到/usr/cross/arm-linux,目标文件格式为arm-elf,只使用缺省语言提示 # set path=(/usr/cross/arm-linux/bin $path) 4. 编译gcc: mkdir c; cd c;../gcc/configure --prefix=/usr/cross/arm-linux --target=arm-elf --disable-nls --without-headers; make all install 这一步是为了能够编译相应的库,也就是uclibc。 # rehash 5. 编译uclibc: 这步非常关键 make menuconfig * 选择cpu类型, * 设置linux头文件位置,也就是linux-kernel的顶级目录 * 去掉PIC选项 * 安装目录设置为“/arm-elf/” make CROSS=arm-elf- 注意不要漏掉后面的“-” 在编译过程中,include目录中的asm和linux会链接到linux-kernel目录中相应的目录上 在这个过程中如果出现什么错误,优先检查这几个目录链接是否正确 make PREFIX=/usr/cross/arm-linux install 6. 再次编译gcc cd /usr/cross/arm-linux/arm-elf/; ln -s include sys-include 在sys-include和lib目录中创建COPIED,内容分别为文件的所在目录,如: /usr/cross/arm-lnx/arm-elf/sys-include /usr/cross/arm-lnx/arm-elf/lib # cd - cd c; rm -rf *; ../gcc/configure --prefix=/usr/cross/arm-linux --target=arm-elf --disable-nls --with-headers=/usr/cross/arm-lnx/arm-elf/sys-include --with-libs=/usr/cross/arm-lnx/arm-elf/lib make all install 7. 创建crt0.o 从newlib中相应的目录中找到crt0.*,arm对应为crt0.S,i386对应为crt0.c, 用arm-elf-gcc 编译成crt0.o文件,然后将crt0.o拷贝到/usr/cross/arm-lnx/lib/gcc/arm-elf/3.4.4/ 8. 完成 可以用交叉编译器编译相应的程序了。 (编辑:我爱资讯网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


