Archive:Getting Started/Build/KDE4 (zh CN)

From KDE TechBase
Revision as of 02:39, 31 May 2008 by Roy (talk | contribs) (Update translation according to english version. not finished)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Template:I18n/Language Navigation Bar (zh CN) Template:TutorialBrowser (zh CN)

摘要

这份教程介绍了一种使从SVN主干获取的KDE在Linux/BSD系统上运行的方法。也有其他如FreeBSD, Windows, Mac OS XSolaris等系统的教程.这份教程通篇使用了bash shell。

Note
当“周一”提交了重大的修改时,发生构建错误的风险会很大。可以通过Dashboard报告意料之外的破坏。非常欢迎大家修复失败的模块。


所需软件

首先你必须安装以下软件,你才能成功完成这份教程:

  • 来自gcc项目的gcc和g++, 最好是4.1或更高的版本。
  • svn(Subversion客户端)
  • pkg-config
  • X11和OpenGL的开发库及头文件
  • libjpeg、libpng、libungif、libxml2和libxslt的开发库及头文件
  • makeobj脚本。可以做为kdesdk-scripts(debian)或类似的软件包的部件来安装,或者直接从WebSVN下载该软件本身。
  • shared-mime-info软件包,是KDE现在使用的freedesktop MIME标准。

你也许还需要安装以下软件:

  • bash

为KDE4开发创建一个用户账户

Note
一些人喜欢为KDE 4使用一个单独的用户帐户(例如一个旧的bug可能会误删除文件),并且后面的这些指令都是以这种方式进行的。

使用一个单独的用户帐户做任何事情都是很有效率的,有关细节请参考Increased Productivity in KDE4 with Scripts

你还可以遵循下面的指令,但并不把这些环境变量保存到你的.bashrc中,请把他们放到一个单独的文件中,以备你在切换到KDE 4环境时使用。


选项1:命令行

useradd -m kde-devel 或者: useradd kde-devel mkdir /home/kde-devel passwd kde-devel chown kde-devel:kde-devel /home/kde-devel 2>/dev/null || \ chown kde-devel:users /home/kde-devel

选项2:使用KControl

如果你已经安装了KDE3,你可以使用KDE控制中心里的用户管理模块来替代上述的命令添加用户。

设置环境

从你的普通账户下拷贝~/.bashrc到新的kde-devel账户下。然后,把.bashrc示例的内容复制并且粘贴到~kde-devel/.bashrc。如果你不能使用makeobj命令,请把例子中的alias make=makeobj这一行注释掉,这一行命令来自于KDE SDK脚本。

这样就可以访问本教程中所使用的如cmakekde这类命令,同时保证了Qt、KDE、CMake文件的正确的路径。

更多的信息,请阅读Getting Started/Increased Productivity in KDE4 with Scripts

切换到新用户

切换到用户kde-devel:(不要忘了输入横线) su - kde-devel

在以下教程中将假定你使用kde-devel用户。

开发用户的shell

在有些系统上,新用户被默认配置使用/bin/sh。如果你的系统不是这样,请跳过这一节。使用/bin/sh非常不方便,你可能希望转换到/bin/bash或其他的shell。

选项1:作为kde-devel用户

如果你没有root特权,同时你的系统支持使用chsh程序来转换你自己的shell,那你可以尝试使用这条命令来把你的shell转换到/bin/bash chsh -s /bin/bash kde-devel

选项2:作为root用户

如果你的系统带有usermod程序,你可以以root身份运行以下命令:usermod -s /bin/bash kde-devel。另一个选择是以root身份使用vipw程序安全的编辑你的/etc/passwd。在文件中找到“kde-devel”,将行尾的“/bin/sh”改为“/bin/bash”。保存你的修改并退出。

新的shell将在你再次使用kde-devel用户登录时自动启动。

D-Bus

QtDBus和KDE使用的D-Bus版本为0.62、0.92或更高的版本。0.60和0.61版可能也行但未经测试。0.90和0.91版不能工作。我们建议使用1.0版(最低0.94),所以如果你还没有该版本,请考虑升级。

如果你已经使用了最新的D-Bus版本或者根本不想升级,可以跳过这一节。

在运行秘诀中的步骤之前,请确认你有X11的头文件和库文件。配置脚本的第五行应该输出:

Building X11 code:        yes

秘诀

Tip
请确认你的环境已按照上面的叙述正确配置。这对cscb函数的正确运行是必须的。


cs wget http://dbus.freedesktop.org/releases/dbus/dbus-1.0.2.tar.gz tar -xvzf dbus-1.0.2.tar.gz cd dbus-1.0.2/ ./configure --prefix=$DBUSDIR --localstatedir=$KDEDIR/var make make install dbus-uuidgen --ensure

发生了什么

在切换到源码目录后(第1行),从freedesktop.org下载D-Bus的源代码(第2行)并解压缩(第3行)。在进入新创建的D-Bus目录后(第4行),通过提供的configure脚本准备构建(第5行)。在完成D-Bus的构建(第5行)和安装(第7行)后,使用dbus-uuidgen工具来安装机器识别文件,该文件使得D-Bus在桌面启动时自动运行(第8行)。

注意,最后两步,你需要有对/var的写入权限,如果你的系统不支持sudo,你可以使用su命令代替。例如:su -c "make install"

CMake

如果你的CMake>=2.4.5,那请跳过这一节。你可以直接使用CMake网站提供的二进制包。这里有针对一些发行版特定的安装包。针对openSUSE的CMake二进制包是由openSUSE构建服务提供的。

秘诀

cs wget http://www.cmake.org/files/v2.4/cmake-2.4.6.tar.gz tar zxf cmake-2.4.6.tar.gz mkdir cmake-build cd cmake-build ../cmake-2.4.6/bootstrap make sudo make install

发生了什么

首先,我们回到kde-devel用户的源码目录(第1行),获取CMake的源码(第2行)并解压(第3行)。然后创建一个CMake的构建目录(第4行)并进入该目录(第5行)。通过运行CMake的boostrap脚本来准备CMake的构建(第6行),然后以root身份编译(第7行)并安装(第8行)CMake。

如果你的系统没有sudo命令,可以使用su -c "make install"命令代替。

Qt

下一步,我们需要从KDE的代码仓库获得Qt4。KDE保证可以依赖任何版本的Qt 4.3来构建。Qt 4.2和之前的版本将不被支持且无法工作。Qt 4.3尚未发行,因此不一定有针对你的发行版的预编译包。你应该使用KDE Subversion服务器提供的代码副本。

秘诀

cd svn checkout svn://anonsvn.kde.org/home/kde/trunk/qt-copy cd qt-copy ./apply_patches ./configure -qt-gif -no-exceptions -debug -fast \

-prefix $QTDIR -qdbus -pch -nomake examples \
-nomake demos

make sub-src sub-tools

  1. make install: only if QTDIR is not the current directory!

make install

发生了什么

我们切换回kde-devel用户的主目录(第1行),然后使用subversion(svn)从KDE的代码仓库下载源代码(第2行)。在切换进入qt-copy目录后(第3行),我们运行qt-copy下脚本来管理补丁(第4行)。

当这些补丁被应用后,我们使用configure脚本准备构建环境(第5-7行),这里使用的几行命令和选项在qt-copy/README.qt-copy文件里有解释。最后,编译我们构建KDE所需的最少需求组件(第8行)并安装Qt(第9-10行)。如果想要全部的例子和demo应用,你可以单独构建他们或直接在qt-copy目录下运行make

注意这次安装并不需要root,因为它把Qt安装到了本地的$QTDIR。所以,这次安装只要$QTDIR$HOME/qt-copy不同即可,如果你已经遵循并执行了上面的指令,就不会出现这种情况。

疑难解答

如果你得到了“error: X11/Xlib.h: No such file or directory”,请安装xorg(实际的名称可能根据操作系统的不同而改变,例如在基于Ubuntu的系统Kubuntu上,这个包叫xorg-dev)的开发包。

如果你在configure时获得缺失定义的错误,请检查$QMAKESPEC的值。一些发行版将这个值设置为系统安装的Qt,如果unset QMAKESPEC可以解决这个问题,你可能希望把它添加到~/.bashrc脚本中。

如果你得到错误“.pch/debug-shared/QtCore”,这是因为Qt 4.3激活了你的gcc所支持的一些预编译头文件,但因为一些原因它不能为你工作。如果你使用distcc,使用-no-pch来配置Qt。如果你使用icecream,请从其svn主分支升级到最新版本。

如果你的gcc支持,Qt4.3允许使用预编译的头文件,但因为某些原因它不工作。如果你使用distcc,使用 -no-pch来configure Qt.如果你使用icecream,从svn上升级到最新的版本。

尝试运行一些Qt程序,比如assistant。如果它在QSpanData::adjustSpanMethods崩溃,那你可能使用了oxygen风格。尝试删除/lib/kde4/plugins/styles/kstyle-oxygen.so/lib/kde4/plugins/styles/oxygen.so。当然,如果它们存在的话。

Strigi

Warning
如果你没有阅读设置环境而直接跳到这里的话,那下面提供的秘诀将无法工作。 秘诀没有错误,cscb也没有排版错误。为了这份教程可以正确的工作,你需要根据这些指令正确设置你的环境。


获取文件元数据(file metadata)的代码现在依赖于Strigi。要安装Strigi,你需要libz、libbz2、openssl(libcrypto或者libssl)、libclucene(>=0.9.16)以及libxml2或libexpat的库和头文件。

秘诀

cs svn checkout svn://anonsvn.kde.org/home/kde/trunk/kdesupport/strigi cd strigi cmakekde

发生了什么

先切换到源码的根目录下(第1行)。使用subversion下载Strigi的源代码(第2行),进入新的~/src/strigi目录(第3行),开始构建(第4行)。这将使我们在构建完成后仍留在Strigi的构建目录里。

kdelibs

构建好Qt4和Strigi之后,我们现在可以开始构建KDE的基础库了,如果你使用了上述的.bashrc,里面就会有那些新的功能。

秘诀

cd $KDE_SRC mkdir KDE && cd KDE svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs cd kdelibs cmakekde

Tip
如果命令失败,并提示“CMake requires an out of source build directory”,请移除~/src/KDE/kdelibs/CMakeCache.txt,然后再次尝试。


Tip
{{{1}}}


发生了什么

我们先进入源文件的根目录(第1行),然后执行make并进入KDE目录(第2行)。使用subversion下载kdelibs的源码(第3行),进入新的~/src/KDE/kdelibs目录(第4行),并开始构建(第5行)。这将使我们在构建完成后仍留在kdelibs的构建目录里。

Tip
在这里你的系统上可能会缺少某些依赖关系!可以通过cmakekde的输出观察到这些缺少的依赖关系。你可能希望先执行cmake ~/src/KDE/MODULE_NAME来编译一些kde模块(比如kdelibs、kdepimlibs等)


附加的KDE特有CMake模块

kdelibs/cmake/modules/中有一些构建KDE4应用所需的附加CMake模块,它们会随kdelibs同时安装。

疑难解答

如果你在编译kdelibs时遇到问题,请先确认所需软件中提到的软件是否已能正确安装运行。其他的可能包括:

  • 如果你得到错误信息说“Please create a separate build directory and run 'cmake path_to_kdelibs [options]' there.”,那么你需要在运行cmakekde之前改变你的构建目录(例:cs KDE/kdelibs && cb && cmakekde
  • 如果找不到Qt或者找到了错误版本的Qt,请确认路径中的第一个qmake就是你需要的qmake。
  • 如果还是有问题,尝试CMake make-option --keep-going
  • 这里你需要libungif库,不然你将得到象这样的错误信息“Could NOT find GIF”。
  • Qt-4.3升级:如果你在kjsembed中得到关于QScriptEngine的链接错误,编辑kdelibs中的CMakeCache.txt并移除关于QT_QTUITOOLS_LIBRARY的那些行,然后再次输入make(这个静态库有新的依赖关系,需要运行cmake的代码添加它运行所需要的依赖)。

kdepimlibs

kdelibs之后,kdebase之前,你需要构建和安装kdepimlibs

秘诀

cs KDE svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdepimlibs cd kdepimlibs cmakekde

发生了什么

我们先进入KDE源码目录(第1行)。使用subversion下载kdepimlibs的源码(第2行),进入新的~/src/KDE/kdepimlibs目录(第3行),并开始构建(第4行)。这将使我们在构建完成后仍留在kdepimlibs的构建目录里。

kdebase

一些kioslaves需要kdebase。 cs KDE svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdebase cd kdebase cmakekde

疑难解答

如果你在编译kdebase时遇到问题:

  • 请确认你安装了libxss的头文件。(如果你没有这些头文件,通常你会得到“undefined references on xscreensaver objects”)
  • 那个meinproc4必须放到/home/kde-devel/kde/bin/meinproc4
  • 如果cmakekde无法找到kdepimlibs的路径,请编辑$KDE_BUILD/kdebase/CMakeCache.txt并手工设置KDEPIMLIBS_INCLUDE_DIR:PATH=$KDE_BUILD/kdepimlibs
  • 如果你得到错误说“Please set the following variables: X11_XTest_LIB(ADVANCED)”, 请安装Xtst的开发包。有些系统上,这个包独立于xext,并取名为x11proto-xext-dev或者libxtst-dev。在安装完软件包后,你可能需要移除构建目录下的CMakeCache.txt。
  • 和“X11_Xinerama_LIB (ADVANCED)”一样,你需要安装xinerama的开发包
  • 如果你得到错误说“Please set the following variables: FONTCONFIG_INCLUDE_DIR, FONTCONFIG_LIBRARIES (ADVANCED)”,那么你需要安装libfontconfig。

生成本地API文档

尽管我们在api.kde.org上提供了KDE的API文档,在你的硬盘上保存一份副本往往也是有必要的,例如你想要通过KDevelop浏览这些文档或你无法上网时。

注意,生成API文档需要几个小时并占用差不多500M的磁盘空间。文档的生成通过kdelibs/doc/api下的一个脚本完成,运行这个脚本你需要doxygen

为了构建kdelibs的API文档,请输入下列命令: cs KDE mkdir apidox cd apidox ../kdelibs/doc/api/doxygen.sh ../kdelibs/

成功了!

你现在可以使用构建kdebase一样的方法构建其他svn模块,运行并测试KDE4或者编写你自己的补丁和应用程序。

关于如何在你的新的KDE4环境下开始工作,请阅读Starting a KDE4 Environment and Applications