linux编译freebsd,freebsd下作x86/arm linux的交叉编译器
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的交叉编译器相关推荐
- linux编译linphone,Ubuntu下linphone交叉编译与移植
移植前搞清楚linphone依赖库的关系,这个一般是移植工作的关键所在,还有一个关键是目标平台的交叉编译器. linphone-3.1.0依赖的库如下: speex(又依赖libogg) libosi ...
- linux 编译 suitesparse,Ubuntu下编译SuiteSparse-4.4.1和METIS-4.0.3
ubuntu下编译caffe Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包 ...
- 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 ...
- 红旗linux 装xp,XP下硬盘安装红旗LINUX
XP下硬盘安装红旗LINUX---转自红旗社区2008-12-02 23:41拒绝黑屏-红旗Linux硬盘安装简单教程 作者: topeak 初级会员(IPLogged) 日期: 2008-10-23 ...
- arm Linux 低成本方案,参赛作品《低成本基于ARM+Linux平台搭建web服务器的物联网学习板》...
[报名阶段需要填写的内容] 1. 参赛者姓名(必填项): 王徕泽 2. 单位或学校名称(选填项): 徕泽电子工作室 3. 当前职务或职称(选填项): 室长 4. 参赛作品的名字(必填项): 低成本基于 ...
- mssql linux版本,在 Mac 下安装 MSSQL for Linux
我的开发环境一直是 Mac,最近一个项目要用到 MSSQL,因此开始尝试直接在 Docker for Mac 下运行 MSSQL for Linux 版本(之前只能在 Windows 环境下安装 MS ...
- linux给文件夹下所有文件授权,Linux 如何将一个文件夹的所有内容授权给某一个用户...
我们可以使用chown命令,ch这里代表change(改变)的意思,own代表英文单词的owner(拥有者),连在一起就是 change owner ,改变某个文件或者文件夹的拥有者. 一般只有roo ...
- arm cef3 linux 编译_【学习笔记】CEF Linux编译
源码编译部分转载:https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart#markdown-header-linux ...
- linux编译避免污染源码分离,如何避免linux上的系统标准C/C++库?
我安装了新版本的GCC,这对我的linux系统造成了污染.我计划以更好的方式处理多个版本的GCC.我计划在/ opt / tools目录下安装所有不同的版本.然后我的项目makefile显式指定要使用 ...
最新文章
- java web程序示例_想要建立一些有趣的东西吗? 这是示例Web应用程序创意的列表。...
- 算法-------位1的个数
- 553 mail from must equal authorized user解决方法
- ajax is failed怎么办,我在AJAX中遇到了问题
- brew install php55redis,Mac下安装LNMP环境
- 从零开始-小程序采坑记录
- 为学好计算机 要采取什么措施,计算机概念教学的内容及对策
- 在Xcode以及Interface Builder下简单使用Cocoa
- android源码百度网盘下载(AOSP源码集合)
- 如何转换html转化mp4,格式互转技巧:webm格式怎么转换mp4?
- scrapy爬虫实战
- 格西烽火 串口助手(一)
- uboot dnw 源码分析
- xshell个人免费版
- 外业精灵,在水土流失监测野外调查工作中的应用
- 对复利计算器和股票投资的总结
- 正态分布随机数 C语言,正态分布随机数生成算法
- [乐意黎]学驾照之汽车灯光
- Bert模型介绍及代码解析(pytorch)
- honor 5x - Flash(ROM)出厂分区表