Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1140523
  • 博文数量: 322
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 3276
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-17 09:21
文章分类

全部博文(322)

文章存档

2010年(155)

2009年(167)

我的朋友

分类:

2009-12-19 08:50:22


1概述

本次SI工具需要将Linux相关模块统一到windows下编译,经过调查,cygwin可以做到这一点,但需要将gccas等编译链接工具和glibclibpthread等库文件在cygwin环境下交叉编译,使之可以在windows平台做到如下两点:

Ø         生成Linux平台上的可执行文件(即生成ELF格式的可执行文件,而不是windows平台的PE格式)。

Ø         ia32平台上可以编译出ia32平台和ipf(ia64)平台相应的可执行文件。

背景知识:

 

2、交叉编译器生成

Gcc项目本身编译时即支持不同目标平台,但是配置复制,一般生成有两条途径:

Ø 如果目标平台已经有现成的编译链接工具和库文件,可以直接拷贝过来使用,但是要求生成目标2进制格式兼容,即两者应该是同一操作系统。实例:

Ø   重新编译gccas等编译链接工具和glibclibpthread等库文件使之支持目标平台,为了简化过程,使用工具crosstool()

Crosstool支持很多平台,其中也包括cygwincygwin既可以做host平台和build平台也可以做target平台。

 

操作系统:Windows2003EE-JP-R2-SP2

使用的cygwin版本为1.5.24-1。(使用宗武下载的版本,此处的1.5.24-1指的是cygwin1.dll的版本)。

使用的crosstool 版本为0.43,放在cygwin环境下的/opt目录下。

我们的Linux模块目前主要编译环境是RHEL3 Update8,其中的gcc版本为3.2.3-56glibc版本为2.3.2crosstool有很多预先编译成功留下来的简化操作脚本,其中包括gcc-3.2.3-glibc-2.3.2这一系列,可以继续使用,需要下载的模块有:binutils-2.15.tar.gzgcc-3.2.3.tar.gzglibc-2.3.2.tar.gzglibc-linuxthreads-2.3.2.tar.gzlinux-2.4.26.tar.bz2

 

2.1 IA32平台

使用demo-i686.sh可以启动相应的编译过程,但要做修改,修改处如下:

Ø         TARBALLS_DIR变更为/opt/downloads,为了简便起见,将下载的模块放在这个目录。

Ø         GCC_LANGUAGES变更为”C”,因为在编译STL库的时候发生的错误,目前还没有找到对应方法。所以把”C++去掉,生成的编译器只能编译C语言源码,不支持C++

Ø         eval `cat i686.dat gcc-4.1.0-glibc-2.3.6-tls.dat` sh all.sh –notest变更为eval `cat i686.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh –notest

其他文件不用修改,在cygwin下执行./demo-i686.sh就可以开始编译过程,整个完成大概需要6小时左右。

生成的交叉编译器%

阅读(777) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~