LinuxSir.cn,穿越时空的Linuxsir!

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

对 make.conf 中 USE 参数的困惑

[复制链接]
发表于 2006-8-25 01:52:03 | 显示全部楼层 |阅读模式
感觉对在 make.conf 中设置 USE 参数有点想不明白,make.conf 中的 USE 是一个全局变量吧?也就是说,以后编译任何一个软件,都相当于使用了该参数?

如设了 USE="-cjk",意味着以后安装的任意软件都加入了东亚语言支持吗?连原本不支持东亚或者unicode编码的软件都能支持了吗?

又或者,有些USE参数是针对某些软件的,对另一些软件也许根本不存在此参数,这样的参数设在make.conf是否合适呢?如USE="-gnome",显然,有很多软件是不支持也没有必要支持gnome的,那USE="-gnome"不就没有意义了吗?在emerge的时候再使用这些USE参数不更好?

我看了有些网友的 make.conf,有USE="-3dnow mmx sse"之类的,我的CPU也是支持这些的,但我已经设了 -march=k8,还有必要设置这样的USE参数吗?怎么觉得有点不对劲..........

最后,问问,有哪些USE参数适合在 make.conf 里配置好呢?
发表于 2006-8-25 06:52:36 | 显示全部楼层
Post by ljx980645
感觉对在 make.conf 中设置 USE 参数有点想不明白,make.conf 中的 USE 是一个全局变量吧?也就是说,以后编译任何一个软件,都相当于使用了该参数?

也对也不对,是全局的,但某个软件包可能并不支持这个USE,所有没有任何影响。
Post by ljx980645
如设了 USE="-cjk",意味着以后安装的任意软件都加入了东亚语言支持吗?连原本不支持东亚或者unicode编码的软件都能支持了吗?

这样做恰恰相反,原本支持的都会不支持。“-”是去掉这个USE的意思。

Post by ljx980645
又或者,有些USE参数是针对某些软件的,对另一些软件也许根本不存在此参数,这样的参数设在make.conf是否合适呢?如USE="-gnome",显然,有很多软件是不支持也没有必要支持gnome的,那USE="-gnome"不就没有意义了吗?在emerge的时候再使用这些USE参数不更好?

无所谓,只是不起做用而已,每次emerge都设USE多麻烦呀。

Post by ljx980645
我看了有些网友的 make.conf,有USE="-3dnow mmx sse"之类的,我的CPU也是支持这些的,但我已经设了 -march=k8,还有必要设置这样的USE参数吗?怎么觉得有点不对劲..........

我的理解-march是针对编译器的,是对gcc起作用的,会生成针对这种CPU架构的代码,USE是针对软件包的。不是一回事。
Post by ljx980645
最后,问问,有哪些USE参数适合在 make.conf 里配置好呢?

看楼主的实际情况啦,这也是gentoo的魅力之一啦。我的经验,先
  1. emerge 软件包 -pv
复制代码
或-av,查看些包支持的USE及现在的选项。如有不符就用ufed改。个别不用全局USE的可以在/etc/portage/package.use里设。
PS:楼主描述问题很清楚,很乐意回答这样的帖子。
回复 支持 反对

使用道具 举报

发表于 2006-8-25 08:40:12 | 显示全部楼层
那么如果我装stardict,如果是自己从网上下包编译的话,想去掉gnome支持,它好像用的是disable-gnome,那在gentoo中装,和设USE为-gnome的效果一样咯?或是startdict不认识这个参数?
回复 支持 反对

使用道具 举报

发表于 2006-8-25 09:43:47 | 显示全部楼层
Post by LaoLang_cool
那么如果我装stardict,如果是自己从网上下包编译的话,想去掉gnome支持,它好像用的是disable-gnome,那在gentoo中装,和设USE为-gnome的效果一样咯?

就是这个意思
这样你就不需要加disable-gnome参数手工configure了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-25 13:44:19 | 显示全部楼层
首先,很感谢大家的支持,昨晚发了三个贴,虽然都不是技术相关,但看了大家的回答和讨论,感觉对gentoo的了解进了一大步,

Post by gorf
这样做恰恰相反,原本支持的都会不支持。“-”是去掉这个USE的意思。


呵呵,不好意思,我是看到一网友的,USE="-kde gnome cjk.......",就有点想当然以为是加入这些支持(为了简便,"-" 号就只写在第一个之前,其他省略),现在才知道原来是去掉 kde 支持、加入 gnome、cjk 支持,^_^

今天看了danfo的一个帖子(我对USE的看法),也有同感,觉得这个USE的这个“支持”是有点不太明白的,我会关注他的帖子,这里就不再重述我的困惑了,

另外,讨论个逻辑:拿 cjk 为例,如果一个软件本身不支持cjk的,那use="cjk"对它是没有意义的,而反过来,如果一个软件支持cjk、并且软件的作者已经设置成默认编译支持(注意这个条件),那么USE="cjk"对它也是没有意义的吧?——最后结论:USE加入支持的参数只对那些软件代码本身支持,但默认编译不支持的软件有效?——但问题是,会有这样的作者,在自己写的软件里面加入了支持xxx的代码却又设置成默认不编译?——如果是我,肯定不会这样做吧。——所以,USE="cjk"岂不是没有意义了,如果这个结论成立,那么其他参数也难免遇到同样的情况。——但 "-kde" 这种“去支持”型的参数例外,他们才是有意义的。

感觉有点钻牛角尖了,呵呵.....
回复 支持 反对

使用道具 举报

发表于 2006-8-25 22:24:36 | 显示全部楼层
#emerge -pv <软件包>时能看到该软件包的有效USE,只有这里有的USE你设了(或加或减)才对这个软件包有意义。这些有效的USE,我猜测,应该是configure脚本的选项的子集。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-26 00:46:36 | 显示全部楼层
Post by gorf
#emerge -pv <软件包>时能看到该软件包的有效USE,只有这里有的USE你设了(或加或减)才对这个软件包有意义。

正解,呵呵,^_^
如果emerge -pv 结果显示有ABCD四个USE参数,但真正emerge的时候,我什么USE参数都不设,那是不是按“加ABCD支持”来编译的?还是按“减ABCD支持”来编译?还是......?
回复 支持 反对

使用道具 举报

发表于 2006-8-26 00:48:36 | 显示全部楼层
针对某个包而不想影响全局 --> package.use
回复 支持 反对

使用道具 举报

发表于 2006-8-26 01:21:30 | 显示全部楼层
Post by ljx980645
正解,呵呵,^_^
如果emerge -pv 结果显示有ABCD四个USE参数,但真正emerge的时候,我什么USE参数都不设,那是不是按“加ABCD支持”来编译的?还是按“减ABCD支持”来编译?还是......?

emerge -pv 看到的是什么,就按照什么来编译
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-26 01:43:42 | 显示全部楼层
Post by zhllg
emerge -pv 看到的是什么,就按照什么来编译

算是彻底明白了,呵呵,
emerge -pv 的结果是会出现“-A +B ”这样的情况的?(还没用过这个命令),如果是这样,那就豁然开朗了,^_^
回复 支持 反对

使用道具 举报

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

本版积分规则

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