LinuxSir.cn,穿越时空的Linuxsir!

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

glibc引发的一些疑问?大家来讨论下哦~~!

[复制链接]
发表于 2008-11-6 17:06:59 | 显示全部楼层 |阅读模式
在目标系统中,安装完glibc,调整工具链,以后的安装的软件包
都将连接这个glibc库,如果我想搞个足够小的目标系统,但是libc库就有
快100M了,因此我想:
    方案1:想uclibc来换glibc,但是在blfs的时候,可能会有很多包编译不过
    方案2:不装glibc,采用静态连接,但是问题出现,当我们装一个软件包,如果它
依赖其它软件包,如:gtk依赖pango,atk,freetype等等。你装这样的软件包时,它将
会找不到相应的包,即使你装了。如你想装atk,它依赖glib包,你首先装glib包,然后
装atk,但是atk在configure的时候就会出错,说没有装上glib,其实你已经装上了。
引发这个问题就是glibc,即工具链没有调整过来,还是连接到tools包的lib中去了
,因为我们根本没有调整!!
    问题:是否可以把glibc装在一个特别的目录下。我们利用它静态装完我们的软件包后,
把它给删除掉


  由于我玩lfs不久,如上面我的观点有错误望指正。
发表于 2008-11-6 19:42:51 | 显示全部楼层
但是libc库就有快100M了


我算了一下 glibc-2.8 的動態庫3m左右(裝完glibc du /lib  3m左右,即使包含了靜態庫和頭文件也就50m左右),估計lz編譯時把調試符號編譯進去而沒有去掉


想uclibc来换glibc,但是在blfs的时候,可能会有很多包编译不过



我用過uclibc来换glibc做桌面,除了少量包要改代碼屏蔽一些uclibc沒有的函數外,其他的都可以無修改正常編譯.


引发这个问题就是glibc,即工具链没有调整过来,还是连接到tools包的lib中去了,因为我们根本没有调整!!



這裡即使沒有調整工具鏈也不會出問題,只是編譯出的程序的動態連接器用的是/tools/lib/ld-linux.so.2 ,而不是/lib/ld-linux.so.2而已。


是否可以把glibc装在一个特别的目录下。我们利用它静态装完我们的软件包后,把它给删除掉


如果系統沒有 glibc 那麽所有的程序必須靜態,任何動態的程序都無法運行(因爲系統沒有動態連接器)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-7 09:40:32 | 显示全部楼层
但是,我编译libpng包的时候,提示需要安装zlib文件,我装上后,然后装libpng包,但是提示还是没有装zlib包,当我装上glibc后,在做同样的,就成功了,这是如何解释了?
同样这样的事情也发生在atk也glib上,因为atk依赖glib
原因是编译atk的时候,找不到我们已经装了的glib
可能是要装pkgconfig包吧,但装上,我设置好pkgconfig环境变量,结果也没有用??
回复 支持 反对

使用道具 举报

发表于 2008-11-7 14:55:16 | 显示全部楼层
我编译libpng包的时候,提示需要安装zlib文件,我装上后,然后装libpng包,但是提示还是没有装zlib包,当我装上glibc后,在做同样的,就成功了,这是如何解释了?


可能是你的工具鏈有問題又或者即將zlib裝到別的地方而沒有告訴configure腳本

我用第6章以前的工具鏈編譯zlib后再編譯libpng均無異常

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2008-11-7 15:08:53 | 显示全部楼层
楼主的想法我在开始时也有过。确实是可以这么做的,只是意义不是很大,仅仅是:做出一个占硬盘空间很小的系统而已。

你可以这么做:首先用Livecd(或者其他任何一个工作环境)编译Linux内核,把编译好的内核安装到一个新的分区,比如/dev/hda8,并配置好grub启动器让它能够启动。能启动的标志是启动这个新内核的时候,最后的提示是:找不到init文件。

好了,现在你的这个系统的大小仅仅只有一个内核的大小,一般是1M左右,够小的吧?不过这个系统还没有什么用,接下来你还要进行一些操作:

重启到Livecd,把init程序以及相关的文件都直接拷贝到/dev/hda8上的相应位置。其内容可以看看LFS手册sysvinit包那一节,并把启动的配置文件/etc/inittab和分区挂载文件/etc/fstab直接拷到相应位置,并做恰当的更改。
再把bash拷过去,这时候你可以尝试进入虚根环境。方法请看LFS手册,也就是把/dev/hda8当作根目录做试验。系统会提示你缺某个库文件。缺哪个,你就拷哪个,一直拷到不缺为止。

如果你能进入虚根环境,就已经差不多了。这时候你会发现在bash下,一大堆命令都没有,比如ls命令,mkdir命令等等。照前面的方法,拷贝过来。如果执行不了,会提示缺某个库文件的,照拷!

最后,把shadow软件包相关的软件再拷贝过来,确保能够用用户名和密码登录,这个超小型的系统就制作完成了。

我当时就是这么玩的,这个系统的大小应该是5-8M左右。够小的吧?只是,一大堆功能都不能实现,很多命令都没有。最致命的是,你要增加软件包,要增加命令都不行,只能像前面那样拷贝。所以这种系统意义不大,就是拿来做实验用的。
回复 支持 反对

使用道具 举报

发表于 2008-11-7 15:48:36 | 显示全部楼层
呵呵,这个方法不错嘛,不过没有意义,就不试了。:)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-7 16:05:26 | 显示全部楼层
如果做一个够小的,没有实际价值的linux,可以做到2-3M
但是,我现在想搞个linux环境,里面有,gtk,x,网络功能环境,可以运行相关程序的
体积控制在100M以内
所以任何站用空间的东西,我都要删掉
回复 支持 反对

使用道具 举报

发表于 2008-11-7 17:23:48 | 显示全部楼层
Post by prettydream;1905435
如果做一个够小的,没有实际价值的linux,可以做到2-3M
但是,我现在想搞个linux环境,里面有,gtk,x,网络功能环境,可以运行相关程序的
体积控制在100M以内
所以任何站用空间的东西,我都要删掉


装了X,不可能小于300MB的。
除非,你安装最古董级别版本的X。
回复 支持 反对

使用道具 举报

发表于 2008-11-7 17:27:16 | 显示全部楼层
我的机器,装好LFS用的空间是65MB,装好BLFS后,一下子就搞到了700多MB。Xorg相当占空间。
回复 支持 反对

使用道具 举报

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

本版积分规则

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