|
我是初学者,此前按照youbest的<<[原创]第二版 手把手教你如何建立自己的Linux系统(LFS速成手册)>>手工敲了一遍,LFS可以运行正常,很是兴奋。但是在后来理解制作过程的时候有几个问题无法理解。我的参考手册是LFS-6.2中文版。
a、ld-linux.so.2是在编译哪个包的时候生成的呀???
应该是在编译glic的时候生成的吧,不知道对不对,在LFS手册中一直也没有找到明确的说法,所以想先确认一下。
b、关于动态加载库ld-linux.so.2。gcc到底使用的哪个ld-linux.so.2的问题。
我想gcc在编译软件包的时候使用的是哪个ld-linux.so.2应该是在gcc的spec文件中决定的吧!
如果是的话,那么在LFS手册第五章第二遍编译gcc的时候,关于打补丁patch -Np1 -i ../gcc-3.4.3-specs-2.patch 后有这么一段注释就觉得有点问题了?
摘录如下:“现在预先打补丁而不是在安装 GCC 之后调整 specs 文件可以保证新的动态连接器在编译 GCC 的时候就用上。也就是说,随后的所有临时程序都会连接到新的 Glibc 上。”
我对注释的理解:他说"在编译 GCC 的时候就用上"是不是就是在说在此处编译gcc_2(_2表示第二编要编译的gcc)的时候也是需要ld-linux.so.2的,打这个补丁就是要让编译gcc_2时使用/tools/下的ld-linux.so.2而不是宿主系统的。
我的问题:在这里第二遍编译gcc_2用的编译器应该就是第一遍编译所得的gcc_1吧,而第一遍的gcc_1的spec文件中关于ld-linux.so.2在前面已经修改过了(即从/libld-linux.so.2=>/tools/libld-linux.so.2)呀。那么这里打这个补丁,对于ld-linux.so.2不是已经没有什么意义了呀???那么注释中所说的"保证新的动态连接器在编译 GCC 的时候就用上"不就是没有必要了吗???不知道理解的对不对???
c、还是关于ld-linux.so.2。是ld-linux.so.2如何搜索动态库的问题。
在精华贴中有一片关于<<关于库的深入思考[探讨原创]>>中的大概在首贴的1/3处有一段关于ld-linux.so.2使用的哪个配置文件ld.so.conf的说明。
摘录: "正常情况下的ld-linux.so.2都是使用/etc/ld.so.conf作为路径搜索配置文件的,但是这句话只是在大多数情况下是正确的,是否是这个文件由ld-linux.so.2决定.如过你的LFS中的第一遍工具链/tools还在的话,
strings /tools/lib/ld-linux.so.2|grep etc
输出很可能是/tools/etc/ld.so.cache.那么它用的哪个文件我们就清楚了吧.
可这个路径前面的/tools到底和什么有关呢?首先我们可能会想到与ld-linux所在的位置有关.还好我们有3套glib,感谢LFS,现在我们拿第二遍的工具链下手.假设我们的LFS在/lfsroot
strings /lfsroot/lib/ld-linux.so.2
很奇怪的是输出竟然是/etc/ld.so.cache! 那这到底和什么有关呢,没错就是我们编译时候的--prefix有关.就是我们编译ld-linux.so.2时候的--prefix有关。"
我的理解:就是说ld-linux.so.2用哪个ld.so.conf,就是看编译ld-linux.so.2时候的--prefix的。那么配置文件就是/prefix/etc/ld.so.conf吧???(不知道对不对)
我的问题:如果上面理解没有错的话,那么就搞不清了。在第6章安装LFS系统的时候在编译glibc的时候,用的"configure --prefix=/usr " 那岂不是在告诉ld-linux.so.2用/usr/etc/ld.so.conf吗???而usr/下是没有这个配置文件的呀。而且显然ld-linux.so是安装在/lib目录下的,用的肯定也是/etc/ld.so.conf。那么不知道--prefix=/usr有没有影响到ld-linux.so,而这又是怎么回事呢?
d、关于第6章中安装LFS软件包的问题。
看到安装的过程中,大部分软件包的在configure 的时候都使用了--prefix=/usr,那么是不是就是在说软件包要安装到/usr/bin和/usr/lib目录下去呀???。包括glibc也是使用了--prefix=/usr。
我的问题:
1〉以--prefix=/usr开头是不是就是再说软件包要以/usr为安装目录? 有一些核心软件为什么也要安装到/usr下呢,想glibc等。
2〉但是在后来做好的LFS系统中的根目录下的/lib下好像也有很多的库文件,这些是在哪里来的呀。我看了一遍的LFS的制作过程,好像没有往/lib下安装的命令呢? |
|