LinuxSir.cn,穿越时空的Linuxsir!

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

LFS 7 的 BLFS 心得。欢迎添加。(本人要改PureLFS64!)

[复制链接]
发表于 2005-10-9 23:54:11 | 显示全部楼层 |阅读模式
受够了/lib64的糟蹋了。。呜呜~~。。。
不过还是打算用multilib,不过把32的都放入lib32。看这些破烂软件还叫唤不。。。。。





我的版本是:
LFS 7 Cross x86_64 multilib SVN 20051008
BLFS的是 SVN 20051006

这些直接编译都没问题:
[php]
vim-6.3
nano-1.2.5
joe-3.3
ed-0.2
ReiserFS-3.6.19
heimdal-0.7
     login 和 su 别用 heimdal提供的,用Shadow里边的文件来代替。参考:
     http://www.linuxfromscratch.org/hints/downloads/files/heimdal.txt  
G-Wrap
pcre
popt
portmap
xinetd
stunnel

[/php]

需要修改的:
[php]
所有的configure几乎都要加上 --libdir=/usr/lib64
    只安装了执行文件的,如ed或者joe等,不用加上边这个参数。

openssl-0.9.8
    1. 打上 allow-64 的补丁. (From BLFS Patch)
    2  修改 Makefile.org 里边的 LIBDIR=lib 为 LIBDIR=lib64
    3  ./config --openssldir=/etc/ssl --prefix=/usr shared
    4  修改 include/openssl/opensslconf.h 和 crypto/opensslconf.h 的
            #define ENGINESDIR "/usr/lib/engines"
         为    #define ENGINESDIR "/usr/lib64/engines"
    5  make MANDIR=/usr/share/man
    6  make MANDIR=/usr/share/man install
    7  mv /usr/lib/engines /usr/lib64/
    8  cp -r certs /etc/ssl


xfsprogs-2.7.3
    修改 /usr/bin/libtools里边的LTCC 和 CC 属性改为 "gcc" 编译通过。
    编译后把libtool修改回来。


emacs
      用 32 模式,不过编译了将近 2 个小时才搞定。好慢!
   
    更新:
    用 Gentoo 提供的补丁。搞定。
    http://www.gtlib.cc.gatech.edu/pub/gentoo/gentoo-x86/app-editors/emacs/files/

openssh-4.2p1
      一定要去掉那个该死的sed,折腾了偶半天


mdadm-2.1
      编辑 Makefile, CWFLAGS变量 中去掉 -Werror。
    make CC="gcc -m64" DESTDIR=""
      make DESTDIR="" install


Python-2.4.1
      patch -Np1 < aaaa.patch
      ./configure --prefix=/usr --enable-shared --libdir=/usr/lib64
      make LIBDIR=/usr/lib64 SCRIPTDIR=/usr/lib64
      make LIBDIR=/usr/lib64 SCRIPTDIR=/usr/lib64 install

tcp_wrappers_7.6
      make install之前要改一下Makefile,把lib安装目录改为/usr/lib64

samba
      configure 后,修改Makefile
      LIBS和AUTH_LIBS中加入 -lkrb5
      KRB5LIBS=-L/lib64
      make 完后,把Makefile中的LIBDIR改为 ${prefix}/lib64/samba
    然后再 make install

libxml2 和 libxslt
      configure 的时候需要指定 --with-python=/usr/lib64

glib-1.2.10
      configure中用--host=i686-pc-linux-gnu先配置, --libdir=/usr/lib64 不要忘了。
    然后修改Makefile中的host_alias 和host_triplet。

guile
      安装完后,修改/usr/include/libguile/scmconfig.h里边的 LTDL_SYSSEARCHPATH 变量,不然G-Wrap安装失败。

expat
       装完记得把/usr/lib里边相关expat的文件转移到/usr/lib64里边。

jpeg-6b
       又要修改libtool 的 LTCC 和 CC

libpng
       最后install的时候,要指定 LIBPATH=/usr/lib64

libmng
       Makefile中的CC要加上-fPIC,我不知道为啥。其他的几个lib路径也要改。

pciutils
       修改 lib 路径

XOrg
      破烂东西,要我编译了2次才搞定路径问题。。。。。。不废话了,开始:
    定制 host.def。加一个#define HaveLib64 Yes
                                      #define Freetype2LibDir usr/lib64
      我用PAM,所以加入 #define HasPam YES
                                   #define HasPamMisc YES

      最后,添加文件 pam.d/xserver,不然普通用户的X启动不了。
    auth  sufficient pam_rootok.so
      auth  required  pam_securetty.so
      account required  pam_permit.so

fontconfig
      安装完后,修改 /usr/lib64/libfontconfig.la 中的 dependency_libs 内容。
    不然cairo安装失败。相信其他使用fontconfig的程序也会失败。

cairo.la
      修改/usr/lib64/libcairo.la 文件,方法同 fontconfig。

ImageMagick
      configure的时 带上 LDFLAGS=-L/usr/lib64

gtk+
      加载gentoo的补丁(不知道不加载是否有问题),然后用host为i686 configure,
    再修改Makefile的i686的内容为x86_64

qt:
     sed了一堆 /usr/lib /lib 为/usr/lib64 /lib64 后,编译成功。死QT偏要去这2个目录找
   东西。。。郁闷。。。



[/php]

编译失败的:
[php]
rpm-4.4.2
     要装 beecrypt-4.1.2
     ./configure --prefix=/usr --libdir=/usr/lib64 \
                   --without-{java,python} \
                   --enable-shared --disable-static
      make
      make libaltdir=/usr/lib64 install
      然后
    RPM 我编译失败,暂时没找到方法。
[/php]
发表于 2005-10-10 15:58:14 | 显示全部楼层
兄弟用的AMD-64的CPU啊?有钱!
回复 支持 反对

使用道具 举报

发表于 2005-10-10 16:03:34 | 显示全部楼层
我有一个疑问,一个系统中包含若干CPU类型的库文件有什么特别的用途?还是会产生特别的特性呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-10 17:42:06 | 显示全部楼层
主要是用于交叉编译的。比如为嵌入式系统编译。这样就要用到多个库的toolchain。

好像没有什么很大的差异,有时间好好研究一下。:)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-12 17:58:41 | 显示全部楼层
有 AMD 64 的兄弟,,来看看啊。。。。支持一下嘛。。嘿嘿。。
回复 支持 反对

使用道具 举报

发表于 2005-10-12 18:23:31 | 显示全部楼层
应楼主要求
支持一下
不过在Gentoo中是使用/lib32,/lib--->lib64,/lib64,这样两个目录和一个软链接来解决libdir=/lib64的问题
回复 支持 反对

使用道具 举报

发表于 2005-10-12 18:32:51 | 显示全部楼层
支持一下!
我的LFS 7.0倒是编译完了,BLFS只进行到一半。太累人,决定中途放弃,过段时间再弄。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-12 19:31:01 | 显示全部楼层
Post by orphen
应楼主要求
支持一下
不过在Gentoo中是使用/lib32,/lib--->lib64,/lib64,这样两个目录和一个软链接来解决libdir=/lib64的问题



这样的话,需要总是改连接。而且万一那个BT把路径写成lib的话,你就惨了。:)。

其实我是想 /lib /lib32的,这样就主要是64的,32的才需要指定lib位置。。不过这次没经验,添加了不少麻烦。。
回复 支持 反对

使用道具 举报

发表于 2005-10-12 20:32:40 | 显示全部楼层
支持一下,我也用的amd64。

1 没有编译gcc的multilib,所以应该是纯64位系统,唯一需要32位的程序是grub,还好有grub-static,据说能够支持64位系统的grub2死活没有编译成功。个别程序活自己创建lib64目录,我看着不爽,于是把lib64下面的东西全部移到lib下面,然后lib64->lib,到目前为止没有任何问题。

2 包管理器,一开始我也用rpm(也是编译了n次才通过),后来发现paco,这个咚咚实在是太好用了,记得编译的时候加上--with-a2paco --with-superpaco --with-pacoball 这3个程序具体有什么用,看看readme吧,会让你有惊喜的。

3 编译gcc的时候,我的是gcc-4.0.2,会在make期间重启(相同的情况也出现在gentoo和ubuntu中),解决办法是CFLAGS="-O0" make 。

4 编译kde3.5beta1的时候用qt-3.3.5会出现找不到某些头文件,是uic的问题,我打了网上的相关补丁,发现没有用,用qt-3.3.4完全正常。

目前发现的问题大概就这些,还有些编译过程中的错误都忘记了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-12 23:08:47 | 显示全部楼层
好!

1。我想要multilib,不过如我所说,这次我弄反了。lib64和lib不一致。活活。
2。有时间看看,不过我一般不用包管理,习惯了。。。
3。这个,以后试试。:)。
4。谢谢情报。
回复 支持 反对

使用道具 举报

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

本版积分规则

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