LinuxSir.cn,穿越时空的Linuxsir!

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

系统是gcc4,emerge -e world时,如何自动指定gcc3编译特定软件?

[复制链接]
发表于 2007-3-13 08:56:22 | 显示全部楼层 |阅读模式
比如qemu-softmmu, 我如何指定用gcc3来编译特定软件?现在都是先把这些软件mask了,然后再手动emerge,稍显麻烦了点.
发表于 2007-3-13 09:48:55 | 显示全部楼层
再装个gcc3,然后用gcc-config调整编译器。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-13 10:00:06 | 显示全部楼层
可能没有表达清楚。
我已装有gcc3,我的qemu是用gcc3装的,在我用emerge -e world重编整个系统时,如果不mask掉qemu,那么在装到qemu时,就会调用gcc4来编,这样当然编不下去了。所以我的问题是:
在用emerge -e world时,怎么指定在编qemu时用gcc3,而不是用gcc4,编完qemu后又自动转用gcc4编剩下的软件?
我现在的临时解决方法是在emerge -e world时,先把qemu mask掉,emerge完后再手工emerge qemu一次。
回复 支持 反对

使用道具 举报

发表于 2007-3-15 04:25:25 | 显示全部楼层
gcc4和gcc3可以共存的。
  1. emerge gcc
  2. emerge gcc-config
  3. emerge =sys-devel/gcc-3.4.6-r2
  4. gcc-config -l
  5. gcc-config 1
复制代码
不用对gcc进行任何mask。
解释以上步骤:
1. 安装gcc4
2. 安装gcc-config这个gcc选择器
3. 安装gcc3的目前最新版本
4. 用gcc-config查看目前使用的是哪一个gcc版本。
5. 把gcc选则为gcc3
需要 source /etc/profile 一下可以避免重新登录即可生效。
接下来你就可以编译qemu了,编译完再用gcc-config选回gcc4就行了。
回复 支持 反对

使用道具 举报

发表于 2007-3-15 07:16:53 | 显示全部楼层
Post by LaoLang_cool
可能没有表达清楚。
我已装有gcc3,我的qemu是用gcc3装的,在我用emerge -e world重编整个系统时,如果不mask掉qemu,那么在装到qemu时,就会调用gcc4来编,这样当然编不下去了。所以我的问题是:
在用emerge -e world时,怎么指定在编qemu时用gcc3,而不是用gcc4,编完qemu后又自动转用gcc4编剩下的软件?
我现在的临时解决方法是在emerge -e world时,先把qemu mask掉,emerge完后再手工emerge qemu一次。

用emerge -pe world获得一个清单,然后脚本处理一下。想不出什么好方法了。觉得portage在各个包的私有控制上还不夠细腻。
回复 支持 反对

使用道具 举报

发表于 2007-3-15 09:11:13 | 显示全部楼层
张老大以前好像有说过这个技巧的呀。论坛里好好翻翻。隐约记得不是改ebuild就是改相关的make文件
回复 支持 反对

使用道具 举报

发表于 2007-3-15 14:49:37 | 显示全部楼层
我怎么不记得了,-_-
这个问题我也没有更好的方法
回复 支持 反对

使用道具 举报

发表于 2007-3-17 08:40:37 | 显示全部楼层
Post by zhllg
我怎么不记得了,-_-
这个问题我也没有更好的方法

张老大可能解决过但真的忘记了。昨天偶向幻幻兄请教,他说是可以在configure阶段指定编译器,形如:
./configure --prefix=/usr \
   --enable-alsa --enable-system --enable-user \
   --cc=i686-pc-linux-gnu-gcc-3.3.6 \
   --host-cc=i686-pc-linux-gnu-gcc-3.3.6
推测上应该是在 ebuild中的src_complie函数里的myconf变量,再加一个类似
--cc=i686-pc-linux-gnu-gcc-3.3.6 --host-cc=i686-pc-linux-gnu-gcc-3.3.6 的东东。
我对ebuild不太熟悉,说错了请拍砖。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-17 09:04:49 | 显示全部楼层
解决的方法应该只能改改ebuild了。
sys-libs/libstdc++-v3是调用gcc-3.3来编译的,参照ebuild看看就可以了。

不过我看不懂-_-b
回复 支持 反对

使用道具 举报

发表于 2007-3-17 15:48:48 | 显示全部楼层
大家在这里讨论,而不反映给gentoo dev,起不到什么效果啊
我刚刚向相关维护者核实过,libstdc++-v3不是调用gcc-3.3来编译的。它只是从gcc3的源代码编译出来的,编译它的编译器只有一个要求,就是大于等于sys-devel/gcc-3.3.3_pre20040130
回复 支持 反对

使用道具 举报

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

本版积分规则

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