- 论坛徽章:
- 1
|
晕乎乎,可能木有说清楚。
我的意思是 从头开始,打造一个完全脱离 sco 的原生开发环境的 gcc 编译环境。
目前的实现:已经实现了 gcc 3.3.1 的编译安装,顺利集成了 gnu 的 as、ar、nm、gporf、autoconf、automake、strips 等。
已经顺利集成了 glibc 2.0 , fsu-pthreads-3.1.4 , zlib-1.4,openssl 0.96e(这是因为更高的版本需要内核里面有一个生成随机数的自旋锁,由于 sco 5.0.6 及以下版本内核不提供这个功能,因此即使高版本能顺利编译成功,也无法使用)。
目前遇到的问题是:gcc 使用系统原生的 ld , 没有任何问题,可以成功编译程序。 cc 使用编译出来的 gnu ld 来作为链接器也木有问题,就是 gcc 使用编译出来的 gnu ld 就无法生成执行文件。
一个小知识:
我们的编译环境实际执行的动作如下:
gcc 用于将 C 程序代码编译成 汇编代码 ,也就是 .S 的文件,并将这个文件内容以数据流的方式传送给 gnu as。
gas 用于将传送过来的汇编代码编译成 .o 的机器码,并调用 ld 进行链接
ld 用于将二进制代码与系统的标准库链接成可执行文件。
sco 默认的可执行代码的格式是 ibcs2, 支持的可执行文件格式为 elf、coff。
========================================================
补充说明。
gnu as 冒失也没有问题,用 gcc 、gas 和系统原生的 ld 可以生成正确的执行文件,用 原生的 cc 、 gas 、 原生的 ld 也能编译出正确的可执行文件。
|
|