Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > 其他操作系统 > freebsd下作x86/arm linux的交叉编译器
【标  题】:freebsd下作x86/arm linux的交叉编译器
【关键字】:freebsd,x86/arm,linux
【来  源】:http://blog.chinaunix.net/article.php?articleId=53131&blogId=132

freebsd下作x86/arm linux的交叉编译器

Your Ad Here 以纯粹的源码编译交叉编译器,还是头一遭。以往都是利用目标主机上的头文件和库文件作交叉编译,比较省力。但是这次尝试编译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. 完成
可以用交叉编译器编译相应的程序了。






尝试了一下arm指令集的执行程序:【上一篇】
我的fvwm配置文件:【下一篇】
【相关文章】
  • FreeBSD kernel 编译大法
  • FreeBSD IPFilter防火墙的安装与设置
  • freebsd+apache+mysql+php+phpmyadmin+zend+discuz傻瓜式
  • FreeBSD下的多链路负载均衡和网卡冗余
  • FreeBSD下如何做nat
  • FreeBSD下如何ADSL拨号上网
  • 使用SSH Security Shell生成并使用非对称密钥登录FreeBSD5.4
  • IDE硬盘DMA模式导致无法安装FreeBSD5.4
  • FreeBSD做策略路由(网通、电信出口)
  • 这里可以做成一个FreeBSD技术学习的blog
  • 【随机文章】
  • 求从棋盘的坐下角到右上角的无环路的总数
  • 切换原临时表空间
  • 北电网络推出新型路由器运行率99.999%
  • J2EE开发架构大总结
  • Windows 更新疑难解答(ZT)
  • OpenSuse & SELD XGL 设置
  • Security Guidelines: ASP.NET 2.0 [目录] & [How to列表]
  • 用Excel和VBA轻松实现桌签批量打印
  • CV安装前核对表
  • 病毒名称 QQ通行证变种BU(Trojan.PSW.QQpass.bu)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.