免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2257 | 回复: 8
打印 上一主题 下一主题

configure为什么显示gcc不用gld,而要用sun的ld呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-05-14 22:54 |只看该作者 |倒序浏览
我试着编译binutils-2.13。configure的时候,虽然没有中断(报错),但我在滚屏的信息中,发现下面这些:
checking for ld used by GCC...  /usr/ccs/bin/ld
checking if the linker (/usr/ccs/bin/ld) is GNU ld...  no
这两行关于ld的信息,我也不明白,我的PATH变量中,/opt/sfw/bin是设置在前面的(gld就在这个目录),为什么configure要用/usr/ccs/bin/ld?(我不想用链接的方式解决这个问题)

附:我的PATH环境变量:
PATH=/usr/bin:/usr/local/bin:/opt/sfw/bin::/usr/dt/bin:/usr/openwin/bin:/bin:/usr/ucb

论坛徽章:
0
2 [报告]
发表于 2003-05-14 23:56 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2003-05-15 07:50 |只看该作者

configure为什么显示gcc不用gld,而要用sun的ld呢?

set一下,看PATH的值才是实际的值。好像/usr/ccs/bin在/opt/sfw/bin前面吧,不然怎么没找到gld?

论坛徽章:
0
4 [报告]
发表于 2003-05-15 13:00 |只看该作者

configure为什么显示gcc不用gld,而要用sun的ld呢?

[quote]原帖由 "随意江湖行"]set一下,看PATH的值才是实际的值。好像/usr/ccs/bin在/opt/sfw/bin前面吧,不然怎么没找到gld?[/quote 发表:


我在帖子里列出的PATH变量,就是set显示的。而且,你可以在我列出的PATH变量中发现,并没有/usr/ccs/bin,我查了一下,在系统中,有两个地方有ld,一个是/usr/ccs/bin,另一个就是我的PATH变量中最后一个路径:/usr/ucb。so,可以肯定的一点是:configure查找可供gcc使用的ld的时候,并非是依据PATH来找的,很可能是象zhatin说的,有一个gcc的配置文件。我回去看看。

谢谢

论坛徽章:
0
5 [报告]
发表于 2003-05-15 20:37 |只看该作者

configure为什么显示gcc不用gld,而要用sun的ld呢?

[quote]原帖由 "zhatin"]看看gcc的specs文件[/quote 发表:


谢谢指导。

gcc -v 输出如下结果:

Reading specs from /usr/local/lib/gcc-lib/i386-pc-solaris2.9/3.2.3/specs

Configured with: ../configure --disable-nls --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld

Thread model: posix

说明这个solaris版本的gcc在编译的时候,就加入了对ld和as的指定;很不明白,我是从sunfreeware下载的gcc二进制包,很多地方都讨论过solaris自己的ld不能被gcc所用,为什么编译gcc的时候还会加入这个option?不明白就算了,哪位能告诉我,通过改specs文件,能否让gcc改为使用GNU的gld?

我已经看过了specs.里面有这么两行(连着的)有点像:
------------
*linker:
collect2
------------

可是也没有出现/usr/ccs/bin这样的绝对路径;specs文件中,在唯一一个出现/usr/ccs/bin的地方,我曾经试着改成/usr/local/bin,但gcc -v输出没变化。其他出现绝对路径的地方,基本上都是针对库的。

论坛徽章:
0
6 [报告]
发表于 2003-05-15 21:19 |只看该作者

configure为什么显示gcc不用gld,而要用sun的ld呢?

有点眉目了:
http://sunland.gsfc.nasa.gov/info/gcc/Collect2.html
我把有意思的地方摘录如下:
The program collect2 is installed as ld in the directory where the passes of the compiler are installed. When collect2 needs to find the real ld, it tries the following file names:

`real-ld' in the directories listed in the compiler's search directories.
`real-ld' in the directories listed in the environment variable PATH.
The file specified in the REAL_LD_FILE_NAME configuration macro, if specified.
`ld' in the compiler's search directories, except that collect2 will not execute itself recursively.
`ld' in PATH.

于是:
$ gcc -print-search-dirs        (我输入的命令,输出结果如下:)
install: /usr/local/lib/gcc-lib/i386-pc-solaris2.9/3.2.3/
programs: =/usr/local/lib/gcc-lib/i386-pc-solaris2.9/3.2.3/:/usr/local/lib/gcc-lib/i386-pc-solaris2.9/3.2.3/:/usr/local/lib/gcc-lib/i386-pc-solaris2.9/:/usr/lib/gcc/i386-pc-solaris2.9/3.2.3/:/usr/lib/gcc/i386-pc-solaris2.9/:/usr/local/lib/gcc-lib/i386-pc-solaris2.9/3.2.3/../../../../i386-pc-solaris2.9/bin/i386-pc-solaris2.9/3.2.3/:/usr/local/lib/gcc-lib/i386-pc-solaris2.9/3.2.3/../../../../i386-pc-solaris2.9/bin/:/usr/ccs/bin/i386-pc-solaris2.9/3.2.3/:/usr/ccs/bin/

这大概就是gcc需要invoke其他相关程序时候的搜索路径,我猜的。非常乱,我也不知道是怎么回事,那么多重复的路径,而且除了最后一个/usr/ccs/bin以外,其他的都不是常规的存放编译相关程序的地方。

哪位能告诉我如何修改这个搜索路径。

论坛徽章:
0
7 [报告]
发表于 2003-05-16 11:17 |只看该作者

configure为什么显示gcc不用gld,而要用sun的ld呢?

我顶

论坛徽章:
0
8 [报告]
发表于 2003-05-16 19:35 |只看该作者

configure为什么显示gcc不用gld,而要用sun的ld呢?

这么有挑战性的问题,不至于看不上眼吧

论坛徽章:
0
9 [报告]
发表于 2003-05-17 16:36 |只看该作者

configure为什么显示gcc不用gld,而要用sun的ld呢?

应该算是解决了:
http://www.math.ias.edu/computing/docs/solaris8/doc/gcc/faq.html#gas

看起来,是hardcode到gcc的二进制里面了,不能改,或许可以通过-B参数来解决。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP