免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1814 | 回复: 0
打印 上一主题 下一主题

freebsd下作x86/arm linux的交叉编译器 [复制链接]

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-10-23 23:16 |只看该作者 |倒序浏览
以纯粹的源码编译交叉编译器,还是头一遭。以往都是利用目标主机上的头文件和库文件作交叉编译,比较省力。但是这次尝试编译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. 完成
   可以用交叉编译器编译相应的程序了。
   


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/132/showart_53131.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP