加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱资讯网 (https://www.52junxun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux编译freebsd

发布时间:2023-01-14 14:54:51 所属栏目:Linux 来源:
导读:  以纯粹的源码编译交叉编译器,还是头一遭。以往都是利用目标主机上的头文件和库文件作交叉编译linux编译器,比较省力。但是这次尝试编译linux的交叉编译器,着实遇到了一些麻烦。

  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. 完成
 
  可以用交叉编译器编译相应的程序了。
 

(编辑:我爱资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!