当前位置:首页 » 编程软件 » gentoo编译

gentoo编译

发布时间: 2024-10-22 15:55:49

1. arch和gentoo的区别和优缺点,如何选择呢

不同于其他常见的linux distro (如 ubuntu等), 两个系统都是属于 “从零”做起,默认系统安装好后,除了最基本的系统软件(如shell,及一些核心软件如sed/find等)外,其他任何应用程序(比如 X系统, 桌面程序,firefox, office, 邮件工具等)都没有安装。 这时你需要根据自己的需要来逐步安装。

Arch 于 Gentoo 的区别在于, Gentoo 的任何一个软件(包括linux kernel)安装时,实际上是下载源代码然后在本机上编译获得,这样用户可以根据自己的物理硬件情况 (CPU类型,单核或多核等) 来调节编译选项从而获得更好的优化 (比如编译内核时可以去掉不需要的模块等),对于高手而言,这种方式得到的系统应该是非常优化的,但是如果是新手,有可能因为配置不当反而得到低效的软件甚至导致出现问题。 而 Arch 安装软件时,下载的是 Arch 维护者已经编译打包好的程序,直接下载到本机使用的, 虽然可能会损失一定的优化(在当前的硬件水平下,应该是感觉不出来的),但是安装程序的速度会比较快,同时不用关心源码,另外 Arch也能支持类似于Gentoo的从源码安装的方式,一般用这种方式来安装linux内核。

Arch/Gentoo 于其他发行版 (如ubuntu/debian)相比,升级是“无缝”的,不存在像ubuntu那样隔半年一个新版本,不同版本间的升级可能导致很多问题,而Arch/Gentoo的升级就是通过平时定期的软件更新。 另外, Arch/Gentoo相对于其他发行版,一般总能更新到最新的软件,但是往往有可能因为更新太快而出现问题。

总而言之, Arch/Gentoo适用于对Linux系统比较了解的人使用,一般来说 Arch/Gentoo用户需要对linux kernel的编译,linux系统的管理,目录结构,常用系统管理/维护工具等有较深入的了解。当使用Arch/Gentoo出现问题时,能通过日志/google等方式来排查解决问题。

而其他发行版(尤其是ubuntu),最适合普通用户,安装好后就能上网/office,而不需要对linux本身有太多了解,当然随着使用这些发行版,用户自然也能学到一些linux知识。

2. gentoo 和 archlinux 有什么优缺点

Gentoo和Arch都是滚动更新的Distro。但是Gentoo是基于源码的,而Arch是二进制。
Gentoo优点是强大的定制性、滚动更新但仍然足够稳定;缺点是编译比较耗费时间(CPU没有足够快的话),对机器特别是CPU要求高。
Arch的优点是软件包多,滚动更新且升级迅速,相较Gentoo更易掌握使用;缺点是近乎强迫式必须紧跟最新滚动升级,不然容易出问题。

3. 编译gentoo内核时,错误:No rule to make target 'firmware/radeon/r900_rlc.bin'

有可能你选内核选项时,r900依赖的选项你没有选

4. 如何用gentoo交叉编译一个基本系统

嵌入式系统的编译环境
为某个平台开发软件,首先需要一个编译环境。一般来说,编译环境包括三部分:工具 链/运行环境/编译方法。对于嵌入式系统来说,常见的编译环境有三种:

本地环境。如很流行的Ubuntu for ARM,利用官方制作好的目标机镜像(通常包含了 编译环境),直接在目标机上编译/安装软件,与PC机开发完全一样。这种方法简单省 事。缺点也显而易见,编译速度慢,耗时长,特别是较大的软件包(如xbmc)的时候, 程序员不是停下来喝杯咖啡就可以收摊,恐怕得打场通宵dota后才能看到结果 了…(或许distcc能有所改善)

虚拟环境。在PC上建立目标机的虚拟环境,如QEMU-ARM,然后chroot到虚拟环境 中编译/安装软件。这种方法利用了PC的处理能力,速度比本地环境要快得多,但 QEMU并不能完美的模拟目标机环境,如不支持某些系统调用等,这可能导致它不能 正确的编译某些软件。

交叉编译。为目标机交叉编译软件,这是最常规的办法,也是上面两种方法实现的基 础。说交叉编译是“脏活”,是因为需要手工解决软件包的所有依赖问题,手工编译 每一个软件包,并且解决软件包对目标机兼容问题… 看网上铺天盖地关于求教/指导 某个软件包如何正确交叉编译就知道,有多少程序员在被它虐?

gentoo下的交叉编译
gentoo是一个metadistribution,从源代码构建整个系统,同时支持很多不同的体 系如alpha/arm/hppa/ppc/sh/sparc/s390等,也为交叉编译提供了便利的工具,这是 其它二进制发行版没有办法比拟的(scratchbox也显得弱爆了)。

gentoo下的交叉编译通过crossdev和portage来实现。portage带来的好处是自 动解决依赖和自动升级更新系统,跟本机环境一样。

制作工具链
crossdev用来制作交叉工具链,并且还提供了交叉编译环境下的emerge的辅助脚本。如 下编译arm平台的工具链:

$ sudo crossdev -t arm-supertux-linux-gnueabi
这样,crossdev最终制作了符合“gentoo规范”的arm交叉编译器。

运行环境
crossdev生成/usr/arm-supertux-linux-gnueabi/目录作为目标系统 $buildroot。编译后生成的目标会被emerge到$buildroot,编译时依赖的环境(如 链接库/头文件/pkgconfig等)也都在$buildroot。

交叉编译
有了工具链/运行环境,使用的crossdev封装过的emerge,就可以自由的emerge了。 如交叉编译bash:

$ sudo emerge-arm-supertux-linux-gnueabi -avu bash
porage会自动把bash的依赖如ncurses/readline一起emerge到$buildroot。 交叉编译就是变得如此简单…

碰到的问题
站在巨人的肩膀上可以看的更远,前提是我们先要爬上巨人的肩膀。portage是一个快 速更新迭代的系统,并不完美,维护者没有办法测试每个软件包的所有兼容性。所以, 当你想安装一个图形环境如$emerge -avu enlightenment时,很可能会出现错误。但 portage提供了细粒度的控制帮助解决这样的问题。下面是我碰到过一些情形和解决方 法:

由于软件包的环境变量引起的问题,如链接库指向了/usr/bin,而非 $buildroot。可以配置$buldroot/etc/portage/env/目录下相应的文 件,portage会自动source该文件,从而改变编译时的环境。

portage没有包含该软件或portage自身的bug引起,如默认使能了某个在目标机 平台不能使用的特性。建立一个针对目标机的overlay,自己编写相应软件包的 ebuild文件指导portage进行交叉编译。

当某个软件包分阶段编译时,如perl编译时先生成miniperl,通过miniperl最 后生成perl目标映像。由于miniperl被交叉编译器生成目标机的映像,正常情况 下不能主机环境中继续运行生成最终的目标映像。这就要借助qemu-arm+binfmt模 拟目标机环境,让miniperl在主机环境中也能无缝的运行。

从形式上看,处理上面几种情况,也是“脏活”。不仅需要了解该软件包的编译环境, 还需要了解portage的原理,还要知道ebuild的书写语法。但是,与传统的交叉编译 方式比起来,这是一劳永逸的工作,别人使用我的运行环境和overlay,即不需再做什 么就能生成最终的目标机系统。

5. gentoo重新编译内核,是否需要重新安装之前安装的软件详细点。

大部分的软件不需要重新编译
少量的会需要重新编译下,比如:显卡驱动等硬件驱动或者一些需要内核模块支持的程序

如果你更换了内核版本,那么这些程序一定需要重新编译
如果你没有更换内核版本,但是改动涉及很多硬件方面的内容,那也需要重新编译这部分软件,否则会这些软件/硬件没办法工作~

有一个工具:mole_rebuild (emerge mole_rebuild就可以了)
如果你不确定是否需要emerge编译哪些软件,那就执行:
mole_rebuild list (在我的电脑上就一个软件需要重新编译,就是闭源的ati显卡驱动)

则会列出需要重新编译的软件(它不会记住你是否重新编译过了这些软件,而是告诉你这些可能需要重新安装,所以你更新内核之后执行一次mole-rebuild就可以了)
然后你可以执行:mole-rebuild rebuild来重新安装这些软件~

热点内容
linux使用命令 发布:2024-10-22 18:45:43 浏览:253
算法递归题 发布:2024-10-22 18:41:51 浏览:879
qq空间怎么清除缓存 发布:2024-10-22 18:37:39 浏览:649
算法开发板 发布:2024-10-22 18:23:54 浏览:190
ftp条款 发布:2024-10-22 18:06:36 浏览:695
客服的服务密码是什么 发布:2024-10-22 17:55:24 浏览:802
打印asp源码 发布:2024-10-22 17:52:36 浏览:300
充值卡如何查询卡号密码 发布:2024-10-22 17:43:09 浏览:476
scrollerandroid 发布:2024-10-22 17:40:13 浏览:445
pythonaesecb 发布:2024-10-22 17:30:45 浏览:731