免费注册 查看新帖 |

Chinaunix

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

请教关于更新GNU assembler出现的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-21 17:09 |只看该作者 |倒序浏览
本帖最后由 Unix进阶教程 于 2010-11-21 17:11 编辑

操作系统:Debian 5.0.6
系统自带GNU assembler版本:GNU assembler (GNU Binutils for Debian) 2.18.0.20080103

刚更新了 GCC 4.5.1,准备顺手把 as 一起更新了,于是去 GNU 下载了 binutils-2.20.1.tar.bz2 ,解压、编译一切正常,安装也很正常(至少看起来正常)。
完成之后 $ which as,显示/usr/local/bin/as
然后 $ as --version,赫然显示仍然是旧版本(2.18.0.20080103)
想可能安装出问题了,于是 $ ld --version,显示说明安装正常,是新版本:GNU ld (GNU Binutils) 2.20.1.20100303
不解,于是进源文件目录,发现编译生成一个文件夹 gas ,进入发现有一个 as-new
$ as-new --version,显示:GNU assembler (GNU Binutils) 2.20.1.20100303
更不解,于是 # cp ./as-new /usr/local/bin/as (管理员权限下),没任何显示,应该是复制完成
信心满满地再次 $ as --version,居然仍然是旧版本(2.18.0.20080103)
更加不解,再次 $ which as,仍然显示/usr/local/bin/as
愤怒,于是 # rm /usr/local/bin/as (管理员权限下)
# cp ./as-new /usr/local/bin/as (管理员权限下)
结果……,悲剧就这样诞生了:$ as --version,仍然是旧版本(2.18.0.20080103)
愤怒中又进行了下述操作:
# rm /usr/bin/as (管理员权限下)
# cp ./as-new /usr/bin/as (管理员权限下)
于是,问题神奇地迎刃而解
$ as --version,显示:GNU assembler (GNU Binutils) 2.20.1.20100303
$ which as,显示/usr/local/bin/as

如此神奇的事情实在是不解,求解释。
注:没有 /etc/alternatives/as

论坛徽章:
2
摩羯座
日期:2013-10-10 14:29:04天蝎座
日期:2014-01-03 09:14:49
2 [报告]
发表于 2010-11-21 17:31 |只看该作者
见鬼了。我有时会遇到过见鬼的事情。

论坛徽章:
0
3 [报告]
发表于 2010-11-21 17:55 |只看该作者
1. 显示时old版本就说明执行的是old版本
2. old版本是/usr/bin/as,说明执行的是/usr/bin/as

估计你安装之前运行as,shell找找发现在/usr/bin/as,然后安装新的as之后它保留了as->/usr/bin/as这个关系(否则每运行一次搜索$PATH也够累的,which命令才这么傻),更新之后它没有更新这个关系(实际上shell也确实不知道安装了新版本),而ld能运行正常是因为你在安装后运行的,第一次搜索shell和which是等价的按照$PATH的先后搜,就是/usr/local/bin/ld
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP