LinuxSir.cn,穿越时空的Linuxsir!

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

准备编译kde3.5.8和3.5.9的看下

[复制链接]
发表于 2008-3-20 14:52:28 | 显示全部楼层 |阅读模式
经不住新版的诱惑,还是编译安装了kde3.5.9(以前用的是从gentoo移植过来的3.5.8).
发现有小bug:
编译kde必须依赖的软件时(比如qt,X11),如果在./configure的时候设置--prefix !=/usr目录,那么编译kdelibs和kdebase的时候,连接器会报错,提示找不到所需的库(事实上这些库都存在,并且在ld.so.conf中都定义了路径),3.5.8可能已经有了补丁,3.5.9的补丁我没找到.只能用权宜之计,在/usr/lib下建立几个符号链接指向真正的库,目前还在编译中,已发现需要作链接的库是:
编译kdelibs:
root@flying-bird:/usr/lib# ln -sv /opt/qt/lib/libqt-mt.so
“./libqt-mt.so” -> “/opt/qt/lib/libqt-mt.so”
root@flying-bird:/usr/lib# ln -sv /usr/X11R73/lib/libXext.so
“./libXext.so” -> “/usr/X11R73/lib/libXext.so”
root@flying-bird:/usr/lib# ln -sv /usr/X11R73/lib/libX11.so
“./libX11.so” -> “/usr/X11R73/lib/libX11.so”
root@flying-bird:/usr/lib# ln -sv /usr/X11R73/lib/libSM.so
“./libSM.so” -> “/usr/X11R73/lib/libSM.so”
root@flying-bird:/usr/lib# ln -sv /usr/X11R73/lib/libICE.so
“./libICE.so” -> “/usr/X11R73/lib/libICE.so”
编译kdebase:
root@flying-bird:/usr/lib# ln -sv /opt/kde/lib/libkio.so
“./libkio.so” -> “/opt/kde/lib/libkio.so”
root@flying-bird:/usr/lib# ln -sv /opt/kde/lib/libkio.la
“./libkio.la” -> “/opt/kde/lib/libkio.la”
发表于 2008-3-20 15:17:23 | 显示全部楼层
很早的问题了,不止3.58和3.59存在,以前的版本也存在,这不是一个bug
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-20 15:34:23 | 显示全部楼层
编译完成(arts,kdelibs,kdebase)运行良好,耗时5个小时
回复 支持 反对

使用道具 举报

发表于 2008-3-20 19:19:44 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2008-3-21 06:49:33 | 显示全部楼层
還有一點要註意,我發現 KDE 是會記住編譯時使用過的庫,hard code 在某處,日後編譯升級時會有點麻煩,舉例:

1. 我的 KDE-3.5.7 最初由 gcc-4.2.1,QT-3.3.7 編譯的,其後系統升級了 QT-3.3.8,KDE 當然可以如常運作,但當我升級 K3B 的時候就投訴 QT 庫的版本跟編譯系統 KDE 的 QT 庫版本不一,不幹!

2. 系統升級為 gcc-4.2.2 之後,我把 kdelibs 重編了一次,這是不會影響運作的

3. 系統再次升級 gcc-4.2.3,原先想借機升級為 KDE-3.5.9,首先會遇到樓主所屬的問題,當然 symlink 也是一法,但最費解竟然編譯某個庫的時候說要找 gcc-4.2.2 的 C++ 庫,路徑居然是舊版 gcc-4.2.2 的絕對路徑,真討厭!

似乎只有二法解之了:

1. 又要用 symlink 欺騙系統,將舊的 gcc-4.2.2 路徑指往新的 gcc-4.2.3

2. 徹底從 QT 由頭到尾重來一遍

郁悶非常。。。 :(
回复 支持 反对

使用道具 举报

发表于 2008-3-22 16:08:52 | 显示全部楼层
qt可以单独使用一个,不用系统现在用的,根据KDE的安装手册上来说:完全可以以一个新的QT欺骗安装程序,而且在安装完毕以后可以删除新的QT,系统内的QT可以继续使用
回复 支持 反对

使用道具 举报

发表于 2008-3-25 07:26:54 | 显示全部楼层
SVN 的 BLFS 手冊更新了,引自 http://www.linuxfromscratch.org/blfs/view/svn/kde/kdelibs.html
  1. ./configure --prefix=$KDE_PREFIX \
  2.             --sysconfdir=/etc/kde \
  3.             --disable-debug \
  4.             --disable-dependency-tracking &&
  5. [color="Red"]LD_LIBRARY_PATH="$QTDIR/lib"[/color] make
复制代码

make 前面加入 LD_LIBRARY_PATH 可以通過了,問題算是臨時解決

我用 gcc-4.3 把 QT、kde-3.5.9 重來一遍,感覺比以前精神百倍了 :)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-25 11:17:16 | 显示全部楼层
如果,x11没有安装在/usr,估计LD_LIBRARY_PATH="$XORG_PREFIX/libQTDIR/lib/"
回复 支持 反对

使用道具 举报

发表于 2008-3-25 23:19:27 | 显示全部楼层
CBLFS 原来有个 patch 有异曲同工之妙

http://svn.cross-lfs.org/svn/rep ... -LDFLAG.fix-1.patch
  1. Submitted By: zippo zippo@oppiz.net
  2. Initial Package Version: kdelibs-3.5.8
  3. Date: 2007-12-29
  4. Upstream Status: Submitted to CBLFS
  5. Origin: zippo zippo@oppiz.net
  6. Description: Fixes a LDFLAGS and RPATH issued in locating the QT library.

  7. diff -Naur kdelibs-3.5.8/dcop/dcopidl/Makefile.am kdelibs-3.5.8-mod/dcop/dcopidl/Makefile.am
  8. --- [color="Red"]kdelibs-3.5.8/dcop/dcopidl/Makefile.am[/color]        2005-09-10 08:27:23.000000000 +0000
  9. +++ kdelibs-3.5.8-mod/dcop/dcopidl/Makefile.am        2007-12-29 20:43:54.000000000 +0000
  10. @@ -11,7 +11,7 @@
  11. noinst_HEADERS = yacc.cc.h

  12. dcopidl_LDADD = $(LIB_QT)
  13. -dcopidl_LDFLAGS = $(KDE_RPATH)
  14. +dcopidl_LDFLAGS = [color="Red"]$(KDE_LDFLAGS) $(QT_LDFLAGS)[/color]

  15. ####### Build rules

  16. diff -Naur kdelibs-3.5.8/dcop/dcopidl2cpp/Makefile.am kdelibs-3.5.8-mod/dcop/dcopidl2cpp/Makefile.am
  17. --- [color="Red"]kdelibs-3.5.8/dcop/dcopidl2cpp/Makefile.am[/color]        2005-09-10 08:27:22.000000000 +0000
  18. +++ kdelibs-3.5.8-mod/dcop/dcopidl2cpp/Makefile.am        2007-12-29 20:44:12.000000000 +0000
  19. @@ -10,7 +10,7 @@
  20. noinst_HEADERS = main.h

  21. dcopidl2cpp_LDADD = $(LIB_QT)
  22. -dcopidl2cpp_LDFLAGS = $(KDE_RPATH)
  23. +dcopidl2cpp_LDFLAGS = [color="Red"]$(KDE_LDFLAGS) $(QT_LDFLAGS)[/color]

  24. dcopidl_output.kidl: ../dcopidl/dcopidl $(srcdir)/dcopidl_test.h
  25.         ../dcopidl/dcopidl $(srcdir)/dcopidl_test.h > dcopidl_output.kidl
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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