LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1301|回复: 6

问一个问题,关于自己编译编译器并安装到已有的发行版中

[复制链接]
发表于 2008-5-28 17:17:07 | 显示全部楼层 |阅读模式
不知道这个问题是否合适这里,不过似乎也没有别的更合适的了。

我系统是CentOS5,编译器的版本是gcc4.1.2,当然还有个gcc34,也就是3.4.6,我想知道这个gcc34是怎么编译安装的,能够让可执行的程序的名字是gcc34而不是gcc呢,是编译的时候加上什么参数吗?
我的目的很简单,我想要自己编译一个4.0.0的版本gcc并安装到系统中(当然还包括g++,cpp),最好能够安装到标准目录下,而我不想覆盖原来的gcc(也包括g++,cpp等,能不能自动安装为cpp40这样的),如果没有办法我也可以接受安装到一个特定的目录下,但是gcc,cpp肯定要改成别的名字,比如gcc40和cpp40,总不会要先安装后手动去修改吧?

请帮忙,谢谢。
发表于 2008-5-29 07:56:27 | 显示全部楼层
你要安装在标准目录,又不想删掉gcc3.4.6,那就应先将gcc3.4.6移到其他目录,再安装gcc4.0.0
回复 支持 反对

使用道具 举报

发表于 2008-5-30 09:15:37 | 显示全部楼层
安装在制定目录是可以实现的,
1.在configure时指定prefix=“指定目录”,然后编译、安装
2.把该“指定目录“/bin放在PATH中,放在/usr/bin的前面
3.或者也可以把/usr/bin下的gcc改名,把新编译的gcc做一个符号链接到/usr/bin下,而不用做第2步

没有在CentOS下做过此操作,待验证
回复 支持 反对

使用道具 举报

发表于 2008-5-30 10:54:46 | 显示全部楼层
  1. ./configure --help
复制代码

然后往下找找,很容易就能找到下面的两行:

  1.   --program-prefix=PREFIX prepend PREFIX to installed program names
  2.   --program-suffix=SUFFIX append SUFFIX to installed program names
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-30 14:08:35 | 显示全部楼层
感谢各位的帮助。
LanEast,谢谢,我看到你说的那两个选项了。不过我仍然有一个问题要问,就是采用这两个选项后是不是我仍然不能把自己编译的4.0.0的版本安装在标准目录也就是/usr下面,因为我看到新编译的4.0.0安装后在安装目录下lib下面会有一些动态库与标准目录的lib下面相同,如果安装到/usr下面那么就会覆盖掉原来的,那样的话是不是原来4.1.2版本的编译器就有可能出问题了呢,所以还是不行对吗?
不过似乎不应该是这样,本来发行版中不就是4.1.2和3.4.6共存吗,难道不存在我担心的这个问题吗?
回复 支持 反对

使用道具 举报

发表于 2008-5-30 14:24:32 | 显示全部楼层
应该有些文件的名字是相同的
  1. ./configure --help
复制代码

的结果里面还可以看到

  1.   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
复制代码

这个也许可以派上用场,我没试过,如果你感兴趣,可以配合着DESTDIR来试试看,或者干脆就用--prefix指定其它的目录
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-30 15:44:59 | 显示全部楼层
好的,多谢了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表