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

2009-05-13 01:40:08来源:未知 阅读 ()

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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

linux编译freebsd,freebsd下作x86/arm linux的交叉编译器相关推荐

  1. linux编译linphone,Ubuntu下linphone交叉编译与移植

    移植前搞清楚linphone依赖库的关系,这个一般是移植工作的关键所在,还有一个关键是目标平台的交叉编译器. linphone-3.1.0依赖的库如下: speex(又依赖libogg) libosi ...

  2. linux 编译 suitesparse,Ubuntu下编译SuiteSparse-4.4.1和METIS-4.0.3

    ubuntu下编译caffe Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包 ...

  3. dtb文件linux位置,dtb文件的由来与ARM Linux 3.x的设备树(Device Tree)

    1. ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称"this whole ARM thing is a f*ckin ...

  4. 红旗linux 装xp,XP下硬盘安装红旗LINUX

    XP下硬盘安装红旗LINUX---转自红旗社区2008-12-02 23:41拒绝黑屏-红旗Linux硬盘安装简单教程 作者: topeak 初级会员(IPLogged) 日期: 2008-10-23 ...

  5. arm Linux 低成本方案,参赛作品《低成本基于ARM+Linux平台搭建web服务器的物联网学习板》...

    [报名阶段需要填写的内容] 1. 参赛者姓名(必填项): 王徕泽 2. 单位或学校名称(选填项): 徕泽电子工作室 3. 当前职务或职称(选填项): 室长 4. 参赛作品的名字(必填项): 低成本基于 ...

  6. mssql linux版本,在 Mac 下安装 MSSQL for Linux

    我的开发环境一直是 Mac,最近一个项目要用到 MSSQL,因此开始尝试直接在 Docker for Mac 下运行 MSSQL for Linux 版本(之前只能在 Windows 环境下安装 MS ...

  7. linux给文件夹下所有文件授权,Linux 如何将一个文件夹的所有内容授权给某一个用户...

    我们可以使用chown命令,ch这里代表change(改变)的意思,own代表英文单词的owner(拥有者),连在一起就是 change owner ,改变某个文件或者文件夹的拥有者. 一般只有roo ...

  8. arm cef3 linux 编译_【学习笔记】CEF Linux编译

    源码编译部分转载:https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart#markdown-header-linux ...

  9. linux编译避免污染源码分离,如何避免linux上的系统标准C/C++库?

    我安装了新版本的GCC,这对我的linux系统造成了污染.我计划以更好的方式处理多个版本的GCC.我计划在/ opt / tools目录下安装所有不同的版本.然后我的项目makefile显式指定要使用 ...

最新文章

  1. java web程序示例_想要建立一些有趣的东西吗? 这是示例Web应用程序创意的列表。...
  2. 算法-------位1的个数
  3. 553 mail from must equal authorized user解决方法
  4. ajax is failed怎么办,我在AJAX中遇到了问题
  5. brew install php55redis,Mac下安装LNMP环境
  6. 从零开始-小程序采坑记录
  7. 为学好计算机 要采取什么措施,计算机概念教学的内容及对策
  8. 在Xcode以及Interface Builder下简单使用Cocoa
  9. android源码百度网盘下载(AOSP源码集合)
  10. 如何转换html转化mp4,格式互转技巧:webm格式怎么转换mp4?
  11. scrapy爬虫实战
  12. 格西烽火 串口助手(一)
  13. uboot dnw 源码分析
  14. xshell个人免费版
  15. 外业精灵,在水土流失监测野外调查工作中的应用
  16. 对复利计算器和股票投资的总结
  17. 正态分布随机数 C语言,正态分布随机数生成算法
  18. [乐意黎]学驾照之汽车灯光
  19. Bert模型介绍及代码解析(pytorch)
  20. honor 5x - Flash(ROM)出厂分区表

热门文章

  1. ARM系列之ARM 平台安全架构PSA和Trustzone区别 浅析
  2. 超分-wavelet
  3. PHP:overtrue/pinyin 中文转拼音工具
  4. TCP包的类型 (SYN, FIN, ACK, PSH, RST, URG)
  5. 2022年IAA行业品类发展洞察系列报告:内容向APP及休闲游戏的突围
  6. Fiddler Classic
  7. docker下redis容器清理缓存
  8. layui文件上传重复问题
  9. 物联网【无码化】体验NB-loT全流程
  10. 网络技术之数据包校验码的计算方法