+ -
当前位置:首页 → 问答吧 → 准备编译kde3.5.8和3.5.9的看下

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

时间:2008-03-20

来源:互联网

经不住新版的诱惑,还是编译安装了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”

作者: kangtian   发布时间: 2008-03-20

很早的问题了,不止3.58和3.59存在,以前的版本也存在,这不是一个bug

作者: xlreyur   发布时间: 2008-03-20

编译完成(arts,kdelibs,kdebase)运行良好,耗时5个小时

作者: kangtian   发布时间: 2008-03-20

的確如此,費解!

http://www.linuxsir.org/bbs/showthread.php?t=314477

作者: d00m3d   发布时间: 2008-03-21

還有一點要註意,我發現 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 由頭到尾重來一遍

郁悶非常。。。 :(

作者: d00m3d   发布时间: 2008-03-21

qt可以单独使用一个,不用系统现在用的,根据KDE的安装手册上来说:完全可以以一个新的QT欺骗安装程序,而且在安装完毕以后可以删除新的QT,系统内的QT可以继续使用

作者: xlreyur   发布时间: 2008-03-22

SVN 的 BLFS 手冊更新了,引自 http://www.linuxfromscratch.org/blfs...e/kdelibs.html
代码:
./configure --prefix=$KDE_PREFIX \
 --sysconfdir=/etc/kde \
 --disable-debug \
 --disable-dependency-tracking &&
LD_LIBRARY_PATH="$QTDIR/lib" make
make 前面加入 LD_LIBRARY_PATH 可以通過了,問題算是臨時解決

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

作者: d00m3d   发布时间: 2008-03-25

如果,x11没有安装在/usr,估计LD_LIBRARY_PATH="$XORG_PREFIX/lib:$QTDIR/lib/"

作者: kangtian   发布时间: 2008-03-25

CBLFS 原来有个 patch 有异曲同工之妙

http://svn.cross-lfs.org/svn/repos/p...AG.fix-1.patch
代码:
Submitted By: zippo [email protected]
Initial Package Version: kdelibs-3.5.8
Date: 2007-12-29
Upstream Status: Submitted to CBLFS
Origin: zippo [email protected]
Description: Fixes a LDFLAGS and RPATH issued in locating the QT library.

diff -Naur kdelibs-3.5.8/dcop/dcopidl/Makefile.am kdelibs-3.5.8-mod/dcop/dcopidl/Makefile.am
--- kdelibs-3.5.8/dcop/dcopidl/Makefile.am     2005-09-10 08:27:23.000000000 +0000
+++ kdelibs-3.5.8-mod/dcop/dcopidl/Makefile.am  2007-12-29 20:43:54.000000000 +0000
@@ -11,7 +11,7 @@
 noinst_HEADERS = yacc.cc.h
 
 dcopidl_LDADD = $(LIB_QT)
-dcopidl_LDFLAGS = $(KDE_RPATH)
+dcopidl_LDFLAGS = $(KDE_LDFLAGS) $(QT_LDFLAGS)
 
 ####### Build rules
 
diff -Naur kdelibs-3.5.8/dcop/dcopidl2cpp/Makefile.am kdelibs-3.5.8-mod/dcop/dcopidl2cpp/Makefile.am
--- kdelibs-3.5.8/dcop/dcopidl2cpp/Makefile.am 2005-09-10 08:27:22.000000000 +0000
+++ kdelibs-3.5.8-mod/dcop/dcopidl2cpp/Makefile.am      2007-12-29 20:44:12.000000000 +0000
@@ -10,7 +10,7 @@
 noinst_HEADERS = main.h
 
 dcopidl2cpp_LDADD = $(LIB_QT)
-dcopidl2cpp_LDFLAGS = $(KDE_RPATH)
+dcopidl2cpp_LDFLAGS = $(KDE_LDFLAGS) $(QT_LDFLAGS)
 
 dcopidl_output.kidl: ../dcopidl/dcopidl $(srcdir)/dcopidl_test.h
 ../dcopidl/dcopidl $(srcdir)/dcopidl_test.h > dcopidl_output.kidl

作者: d00m3d   发布时间: 2008-03-26