Archive:Getting Started/Build/KDE4 (zh CN): Difference between revisions

    From KDE TechBase
    m (AnneW moved page Getting Started/Build/KDE4 (zh CN) to Archive:Getting Started/Build/KDE4 (zh CN) without leaving a redirect: Obsolete)
     
    (11 intermediate revisions by 6 users not shown)
    Line 1: Line 1:
    <!--Huanzhou Zhu初稿,Liang Qi整理!-->
    <!--Huanzhou Zhu初稿,Liang Qi整理!-->
    {{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4}}
    {{Template:I18n/Language Navigation Bar (zh_CN)|Getting_Started/Build/KDE4}}
    {{TutorialBrowser|
    {{TutorialBrowser (zh_CN)|


    series=开始|
    series=开始|
    Line 7: Line 7:
    name=从源代码构建KDE4|
    name=从源代码构建KDE4|


    pre=[[../../Sources/Anonymous_SVN|Anonymous SVN Quickstart Guide]]|
    pre=[[../../Sources/Anonymous_SVN_(zh_CN)|匿名使用 SVN 快速指南]]|


    next=[[../../Set_up_KDE_4_for_development_%28zh_CN%29|启动KDE4环境和应用程序]]|
    next=[[../../Set_up_KDE_4_for_development_(zh_CN)|启动KDE4环境和应用程序]]|


    reading=[http://kdesvn-build.kde.org/ kdesvn-build: The KDE From Subversion Build Tool]<br>[[../../Increased_Productivity_in_KDE4_with_Scripts|Increased Productivity in KDE4 with Scripts]]<br>[[Development/Tutorials/CMake_(zh_CN) |CMake介绍]]<br>[[../KDE4/FreeBSD_(zh_CN)|FreeBSD备注]]<br>[[../KDE4/Mac OS X|Instructions for Mac OS X]]|
    reading=[http://kdesvn-build.kde.org/ kdesvn-build: 从Subversion构建KDE]<br>[[../../Increased_Productivity_in_KDE4_with_Scripts_(zh_CN)|KDE4 中用脚本来提升效率]]<br>[[Development/Tutorials/CMake_(zh_CN) |CMake介绍]]<br>[[../KDE4/FreeBSD_(zh_CN)|FreeBSD备注]]<br>[[../KDE4/Mac OS X|Mac OS X指南]]|
    }}
    }}


    == 摘要 ==
    == 摘要 ==


    这份教程介绍了一种使KDE运行于Linux/BSD系统的方法。这份教程通篇使用了bash shell。如果你对在其他系统(如:Solaris、MacOS或Microsoft Windows)上构建KDE有兴趣, 请访问[[../|构建]]页面并在最下方的链接处选择相应的操作系统。
    这份教程介绍了一种使从SVN主干获取的KDE在Linux/BSD系统上运行的方法。也有其他如[[Getting_Started/Build/KDE4/FreeBSD|FreeBSD]], [http://www.kdelibs.com/ Windows], [[Getting_Started/Build/KDE4/Mac OS X|Mac OS X]] 和[http://solaris.kde.org/ Solaris]等系统的教程。本教程将创建一个特殊的使用者:kde-devel,用来执行 KDE trunk。一方面,这使得其他使用者可以继续使用其他 KDE 版本。另一方面,测试特殊的全系统程序代码,如 KDE 显示管理员是不可能的。这里有一个教程[[Getting_Started/Build/KDE4/onVmWare|设定 KDE 4 trunk 在 virtual machine 上]]


    {{note|当周一提交了重大的修改时,构建错误的风险会很大。可以通过[http://developer.kde.org/~dirk/dashboard/ Dashboard]报告意料之外的破坏。非常欢迎大家修复失败的模块。
    这份教程通篇使用了"bash shell"。
     
    {{note|当“周一”提交了重大的修改时,发生构建错误的风险会很大。可以通过[http://developer.kde.org/~dirk/dashboard/ Dashboard]报告意料之外的破坏。非常欢迎大家修复失败的模块。
    }}
    }}


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


    使用一个单独的用户帐户做任何事情都是很有效率的,有关细节请参考[[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts|Increased Productivity in KDE4 with Scripts]]。
    使用一个单独的用户帐户做任何事情都是很有效率的,有关细节请参考[[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts|在KDE4中使用脚本提高生产率]]。


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


    === 选项1:命令行 ===
    === 选项1:命令行 ===
    <code bash>
    {{Note|
    useradd -m kde-devel
    在某些系统上,新用户的配置在默认情况下使用{{path|/bin/sh}}。使用 {{path|/bin/sh}} 非常不方便工作,您可能需要更改为 {{path|/bin/bash}} 或其他shell。
    </code>
    在 Ark Linux 和 Fedora,你可以用<tt>-s /bin/bash</tt>切换 {{path|/bin/sh}}为 {{path|bash}}。
    或者:
    }}
    <code bash>
     
    useradd kde-devel
    <syntaxhighlight lang="bash">
    mkdir /home/kde-devel
    useradd -m kde-devel -s /bin/bash
    passwd kde-devel
    passwd kde-devel
    chown kde-devel:kde-devel /home/kde-devel 2>/dev/null || \
    </syntaxhighlight>
    chown kde-devel:users /home/kde-devel
     
    </code>
    {{Warning|
    新的 kde-devel 使用者不会自动加入到所有的使用者群组,因此还不够完整,无法执行 sudo 等。编辑您的 /etc/group 文件加入 kde-devel 使用者到所有您需要的群组(可能是您的普通使用者已经分配的群组)。
    }}


    === 选项2:使用KControl ===
    === 选项2:使用KControl ===
    Line 64: Line 68:
    === 设置环境 ===
    === 设置环境 ===


    从你的普通账户下拷贝{{path|~/.bashrc}}到新的kde-devel账户下。然后,把[[Getting Started/Increased Productivity in KDE4 with Scripts/.bashrc|.bashrc示例]]的内容复制并且粘贴到{{path|~kde-devel/.bashrc}}。如果你不能使用<tt>makeobj</tt>命令,请把例子中的<tt>alias make=makeobj</tt>这一行注释掉,这一行命令来自于KDE SDK脚本。
    从你的普通账户下拷贝{{path|~/.bashrc}}到新的kde-devel账户下。然后,把[[Getting Started/Increased Productivity in KDE4 with Scripts/.bashrc_(zh_CN)|.bashrc示例]]的内容复制并且粘贴到{{path|~kde-devel/.bashrc}}。如果你不能使用<tt>makeobj</tt>命令,请把例子中的<tt>alias make=makeobj</tt>这一行注释掉。此外,您可以下载 kde-sdk 軟件包(或执行 subversion checkout)和含入 kde-sdk/scripts/目录在您的 path。您可能还需要修改 path,以确保它不包括您的KDE3 的路径。另外,如果你想使用 KDevelop 开发 KDE 4 应用程序您可能要给 ''cmake'' 指令加入 ''-GKDevelop3'' 参数(以让 CMake 生成 KDevelop 的项目文件,这将有助于避免在未来的重建,请见[[Getting_Started/Set_up_KDE_4_for_development#Setting_up_the_environment|这里]])。


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


    更多的信息,请阅读[[Getting Started/Increased Productivity in KDE4 with Scripts]]。
    更多的信息,请阅读[[Getting Started/Increased_Productivity_in_KDE4_with_Scripts_(zh_CN)|在 KDE4 中用脚本来提升效率]]。


    === 切换到新用户 ===
    === 切换到新用户 ===
    切换到用户kde-devel:(不要忘了输入横线)
    切换到用户kde-devel:(不要忘了输入横线)
    <code bash>
    <syntaxhighlight lang="bash">
    su - kde-devel
    su - kde-devel
    </code>
    </syntaxhighlight>


    在以下教程中将假定你使用<tt>kde-devel</tt>用户。
    {{Note|
    如果 ssh 指令无效,请查看[[Getting_Started/Set_up_KDE_4_for_development#Launching_KDE_4_apps|启动 KDE 4 应用程序]]。
    }}


    == 开发用户的shell ==
    == 开发用户的shell ==
    Line 85: Line 91:


    如果你没有root特权,同时你的系统支持使用<tt>chsh</tt>程序来转换你自己的shell,那你可以尝试使用这条命令来把你的shell转换到{{path|/bin/bash}}:
    如果你没有root特权,同时你的系统支持使用<tt>chsh</tt>程序来转换你自己的shell,那你可以尝试使用这条命令来把你的shell转换到{{path|/bin/bash}}:
    <code bash>
    <syntaxhighlight lang="bash">
    chsh -s /bin/bash kde-devel
    chsh -s /bin/bash kde-devel
    </code>
    </syntaxhighlight>


    === 选项2:作为root用户 ===
    === 选项2:作为root用户 ===
    Line 95: Line 101:
    新的shell将在你再次使用kde-devel用户登录时自动启动。
    新的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|请确认你的环境已按照[[Getting_Started/Build/KDE4#Setting_up_the_environment|上面]]的叙述正确配置。这对<tt>cs</tt>和<tt>cb</tt>函数的正确运行是必须的。}}
    从原始码建构 kde4 的必需軟件包在不同的发行版也不同。您的发行版指示如下:


    <!--'cs'和'cb'不是拼写错误!-->
    * [[Getting_Started/Build/KDE4/Ark Linux|Ark Linux]]
    <code bash>
    * [[Getting_Started/Build/KDE4/Arch Linux|Arch Linux]]
    cs
    * [[Getting_Started/Build/KDE4/Fedora|Fedora]]
    wget http://dbus.freedesktop.org/releases/dbus/dbus-1.0.2.tar.gz
    * [[Getting_Started/Build/KDE4/Kubuntu and Debian|Kubuntu and Debian]]
    tar -xvzf dbus-1.0.2.tar.gz
    * [[Getting_Started/Build/KDE4/openSUSE|openSUSE]] 注:有一个  [http://en.opensuse.org/KDE/Developing/Guide openSUSE 具体指导]。不过要小心,因为它更新了大量的稳定軟件包。
    cd dbus-1.0.2/
    * [[Getting_Started/Build/KDE4/Gentoo|Gentoo]]
    ./configure --prefix=$DBUSDIR --localstatedir=$KDEDIR/var
    * [[Getting_Started/Build/KDE4/LFS|Linux from Scratch]] 或从原始码建构。
    make
    * [[Getting_Started/Build/KDE4/Mandriva|Mandriva]]
    make install
    dbus-uuidgen --ensure
    </code>


    === 发生了什么 ===
    * [[Getting_Started/Build/KDE4/Generic|任何其他发行版]]
    在切换到源码目录后(第1行),从freedesktop.org下载D-Bus的源代码(第2行)并解压缩(第3行)。在进入新创建的D-Bus目录后(第4行),通过提供的{{path|configure}}脚本准备构建(第5行)。在完成D-Bus的构建(第5行)和安装(第7行)后,使用<tt>dbus-uuidgen</tt>工具来安装机器识别文件,该文件使得D-Bus在桌面启动时自动运行(第8行)。


    注意,最后两步,你需要有对{{path|/var}}的写入权限,如果你的系统不支持sudo,你可以使用<tt>su</tt>命令代替。例如:<tt>su -c "make install"</tt>。
    您的下一个编译步骤取决于发行版提供的套件包。


    == CMake ==
    === 编译 kde-qt 等 ===
    如果你的[http://cmake.org/ CMake]>=2.4.5,那请跳过这一节。你可以直接使用[http://www.cmake.org/HTML/Download.html CMake网站]提供的二进制包。这里有针对一些发行版特定的安装包。针对openSUSE的CMake二进制包是由[http://software.opensuse.org/download/devel:/tools:/building/ openSUSE构建服务]提供的。
    如果您不希望使用由发行版提供的軟件包,您可以自己编译,如 Qt。建构包括 CMake、Qt4(kde-qt)和 kdesupport 依赖的指示在[[Getting_Started/Build/KDE4/Prerequisites (zh CN)|建构的事先需要页面]]。请注意,automoc、phonon、strigi、soprano 以及其他一些 kdesupport 中的东西,如果您有这些东西缺失的错误,你需要取得 kdesupport。


    === 秘诀 ===
    == 建构 KDE 给开发或稳定使用 ==
    <!--'cs'和'cb'不是拼写错误!-->
    <code bash>
    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
    </code>


    === 发生了什么 ===
    下面的命令用于从 trunk 建构最新版的不稳定 KDE。这不应该用在生产环境,但推荐给开发者。
    首先,我们回到<tt>kde-devel</tt>用户的源码目录(第1行),获取CMake的源码(第2行)并解压(第3行)。然后创建一个CMake的构建目录(第4行)并进入该目录(第5行)。通过运行CMake的boostrap脚本来准备CMake的构建(第6行),然后以root身份编译(第7行)并安装(第8行)CMake。
    想要建构稳定版本,请访问:


    如果你的系统没有<tt>sudo</tt>命令,可以使用<tt>su -c "make install"</tt>命令代替。
    http://techbase.kde.org/Getting_Started/Build/KDE4.x
     
    == Qt ==
    下一步,我们需要从KDE的代码仓库获得Qt4。KDE保证可以依赖任何版本的Qt 4.3来构建。Qt 4.2和之前的版本将不被支持且无法工作。Qt 4.3尚未发行,因此不一定有针对你的发行版的预编译包。你应该使用KDE Subversion服务器提供的代码副本。
     
    === 秘诀 ===
    <code bash>
    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
    # make install: only if QTDIR is not the current directory!
    make install 
    </code>
     
    === 发生了什么 ===
    我们切换回<tt>kde-devel</tt>用户的主目录(第1行),然后使用subversion(svn)从KDE的代码仓库下载源代码(第2行)。在切换进入{{path|qt-copy}}目录后(第3行),我们运行{{path|qt-copy}}下脚本来管理补丁(第4行)。
     
    当这些补丁被应用后,我们使用<tt>configure</tt>脚本准备构建环境(第5-7行),这里使用的几行命令和选项在{{path|qt-copy/README.qt-copy}}文件里有解释。最后,编译我们构建KDE所需的最少需求组件(第8行)并安装Qt(第9-10行)。如果想要全部的例子和demo应用,你可以单独构建他们或直接在{{path|qt-copy}}目录下运行<tt>make</tt>。
     
    注意这次安装并不需要root,因为它把Qt安装到了本地的{{path|$QTDIR}}。所以,这次安装只要{{path|$QTDIR}}和{{path|$HOME/qt-copy}}不同即可,如果你已经遵循并执行了上面的指令,就不会出现这种情况。
     
    === 疑难解答 ===
    如果你得到了“error: X11/Xlib.h: No such file or directory”,请安装<tt>xorg</tt>(实际的名称可能根据操作系统的不同而改变,例如在基于Ubuntu的系统Kubuntu上,这个包叫<tt>xorg-dev</tt>)的开发包。
     
    如果你在configure时获得缺失定义的错误,请检查<tt>$QMAKESPEC</tt>的值。一些发行版将这个值设置为系统安装的Qt,如果<tt>unset QMAKESPEC</tt>可以解决这个问题,你可能希望把它添加到<tt>~/.bashrc</tt>脚本中。
     
    如果你得到错误“.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程序,比如{{program|assistant}}。如果它在QSpanData::adjustSpanMethods崩溃,那你可能使用了oxygen风格。尝试删除{{path|/lib/kde4/plugins/styles/kstyle-oxygen.so}}和{{path|/lib/kde4/plugins/styles/oxygen.so}}。当然,如果它们存在的话。
     
    == Strigi ==
     
    {{warning|如果你没有阅读[[Getting_Started/Build/KDE4_(zh_CN)#设置环境|设置环境]]而直接跳到这里的话,'''那下面提供的秘诀将无法工作'''。
     
    秘诀没有错误,<tt>cs</tt>和<tt>cb</tt>也没有排版错误。为了这份教程可以正确的工作,你'''需要'''根据这些指令正确设置你的环境。}}
     
    获取文件元数据(file metadata)的代码现在依赖于Strigi。要安装Strigi,你需要libz、libbz2、openssl(libcrypto或者libssl)、libclucene(>=0.9.16)以及libxml2或libexpat的库和头文件。
     
    === 秘诀 ===
    <!--'cs'和'cb'不是拼写错误!-->
    <code bash>
    cs
    svn checkout svn://anonsvn.kde.org/home/kde/trunk/kdesupport/strigi
    cd strigi
    cmakekde
    </code>
     
    === 发生了什么 ===
    先切换到源码的根目录下(第1行)。使用subversion下载Strigi的源代码(第2行),进入新的{{path|~/src/strigi}}目录(第3行),开始构建(第4行)。这将使我们在构建完成后仍留在Strigi的构建目录里。


    == kdelibs ==
    == kdelibs ==
    Line 206: Line 135:
    === 秘诀 ===
    === 秘诀 ===
    <!--'cs'和'cb'不是拼写错误!-->
    <!--'cs'和'cb'不是拼写错误!-->
    <code bash>
    <syntaxhighlight lang="bash">
    cd $KDE_SRC
    cd $KDE_SRC
    mkdir KDE && cd KDE
    mkdir KDE && cd KDE
    Line 212: Line 141:
    cd kdelibs
    cd kdelibs
    cmakekde
    cmakekde
    </code>
    </syntaxhighlight>


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


    {{tip|如果<tt>cmakekde</tt>还输出同样的错误,那试试这个:
    {{tip|如果<tt>cmakekde</tt>还输出同样的错误,那试试这个:
    <code bash>
    <syntaxhighlight lang="bash">
    cd
    cd
    cmake -DCMAKE_INSTALL_PREFIX=$KDEDIR \
    cmake -DCMAKE_INSTALL_PREFIX=$KDEDIR \
    Line 224: Line 153:
    make
    make
    make install
    make install
    </code>}}
    </syntaxhighlight>}}


    === 发生了什么 ===
    === 发生了什么 ===
    Line 247: Line 176:
    === 秘诀 ===
    === 秘诀 ===
    <!--'cs'和'cb'不是拼写错误!-->
    <!--'cs'和'cb'不是拼写错误!-->
    <code bash>
    <syntaxhighlight lang="bash">
    cs KDE
    cs KDE
    svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdepimlibs
    svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdepimlibs
    cd kdepimlibs
    cd kdepimlibs
    cmakekde
    cmakekde
    </code>
    </syntaxhighlight>


    === 发生了什么 ===
    === 发生了什么 ===
    Line 260: Line 189:
    一些kioslaves需要kdebase。
    一些kioslaves需要kdebase。
    <!--'cs'和'cb'不是拼写错误!-->
    <!--'cs'和'cb'不是拼写错误!-->
    <code bash>
    <syntaxhighlight lang="bash">
    cs KDE
    cs KDE
    svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdebase
    svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdebase
    cd kdebase
    cd kdebase
    cmakekde
    cmakekde
    </code>
    </syntaxhighlight>
    === 疑难解答 ===
    === 疑难解答 ===
    如果你在编译kdebase时遇到问题:
    如果你在编译kdebase时遇到问题:
    * 请确认你安装了<tt>libxss的头文件</tt>。(如果你没有这些头文件,通常你会得到“undefined references on xscreensaver objects”)
    * 请确认你安装了<tt>libxss的头文件</tt>。(如果你没有这些头文件,通常你会得到“undefined references on xscreensaver objects”)
    * 那个<tt>meinproc</tt>必须放到{{path|/home/kde-devel/kde/bin/meinproc}}
    * 那个<tt>meinproc4</tt>必须放到{{path|/home/kde-devel/kde/bin/meinproc4}}
    * 如果cmakekde无法找到kdepimlibs的路径,请编辑{{path|$KDE_BUILD/kdebase/CMakeCache.txt}}并手工设置<tt>KDEPIMLIBS_INCLUDE_DIR:PATH=$KDE_BUILD/kdepimlibs</tt>
    * 如果cmakekde无法找到kdepimlibs的路径,请编辑{{path|$KDE_BUILD/kdebase/CMakeCache.txt}}并手工设置<tt>KDEPIMLIBS_INCLUDE_DIR:PATH=$KDE_BUILD/kdepimlibs</tt>
    * 如果你得到错误说“Please set the following variables: X11_XTest_LIB(ADVANCED)”, 请安装<tt>Xtst</tt>的开发包。有些系统上,这个包独立于<tt>xext</tt>,并取名为<tt>x11proto-xext-dev</tt>或者<tt>libxtst-dev</tt>。在安装完软件包后,你可能需要移除构建目录下的CMakeCache.txt。
    * 如果你得到错误说“Please set the following variables: X11_XTest_LIB(ADVANCED)”, 请安装<tt>Xtst</tt>的开发包。有些系统上,这个包独立于<tt>xext</tt>,并取名为<tt>x11proto-xext-dev</tt>或者<tt>libxtst-dev</tt>。在安装完软件包后,你可能需要移除构建目录下的CMakeCache.txt。
    Line 282: Line 211:
    为了构建kdelibs的API文档,请输入下列命令:
    为了构建kdelibs的API文档,请输入下列命令:
    <!--'cs'和'cb'不是拼写错误!-->
    <!--'cs'和'cb'不是拼写错误!-->
    <code bash>
    <syntaxhighlight lang="bash">
    cs KDE
    cs KDE
    mkdir apidox
    mkdir apidox
    cd apidox
    cd apidox
    ../kdelibs/doc/api/doxygen.sh ../kdelibs/
    ../kdelibs/doc/api/doxygen.sh ../kdelibs/
    </code>
    </syntaxhighlight>


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


    关于如何在你的新的KDE4环境下开始工作,请阅读[[Getting Started/Set up KDE 4 for development#Nested_KDE_4_session|Starting a KDE4 Environment and Applications]]。
    关于如何在你的新的KDE4环境下开始工作,请阅读[[Getting Started/Set up KDE 4 for development#Nested_KDE_4_session|启动KDE4环境和应用]]。


    [[Category:Build KDE]]
    [[Category:Build KDE]]
    [[Category:KDE4]]
    [[Category:KDE4]]

    Latest revision as of 12:26, 23 June 2013

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

    摘要

    这份教程介绍了一种使从SVN主干获取的KDE在Linux/BSD系统上运行的方法。也有其他如FreeBSD, Windows, Mac OS XSolaris等系统的教程。本教程将创建一个特殊的使用者:kde-devel,用来执行 KDE trunk。一方面,这使得其他使用者可以继续使用其他 KDE 版本。另一方面,测试特殊的全系统程序代码,如 KDE 显示管理员是不可能的。这里有一个教程设定 KDE 4 trunk 在 virtual machine 上

    这份教程通篇使用了"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可能会误删除文件),并且后面的这些指令都是以这种方式进行的。

    使用一个单独的用户帐户做任何事情都是很有效率的,有关细节请参考在KDE4中使用脚本提高生产率

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


    选项1:命令行

    Note
    在某些系统上,新用户的配置在默认情况下使用/bin/sh。使用 /bin/sh 非常不方便工作,您可能需要更改为 /bin/bash 或其他shell。 在 Ark Linux 和 Fedora,你可以用-s /bin/bash切换 /bin/shbash


    useradd -m kde-devel -s /bin/bash
    passwd kde-devel
    
    Warning
    新的 kde-devel 使用者不会自动加入到所有的使用者群组,因此还不够完整,无法执行 sudo 等。编辑您的 /etc/group 文件加入 kde-devel 使用者到所有您需要的群组(可能是您的普通使用者已经分配的群组)。


    选项2:使用KControl

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

    设置环境

    从你的普通账户下拷贝~/.bashrc到新的kde-devel账户下。然后,把.bashrc示例的内容复制并且粘贴到~kde-devel/.bashrc。如果你不能使用makeobj命令,请把例子中的alias make=makeobj这一行注释掉。此外,您可以下载 kde-sdk 軟件包(或执行 subversion checkout)和含入 kde-sdk/scripts/目录在您的 path。您可能还需要修改 path,以确保它不包括您的KDE3 的路径。另外,如果你想使用 KDevelop 开发 KDE 4 应用程序您可能要给 cmake 指令加入 -GKDevelop3 参数(以让 CMake 生成 KDevelop 的项目文件,这将有助于避免在未来的重建,请见这里)。

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

    更多的信息,请阅读在 KDE4 中用脚本来提升效率

    切换到新用户

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

    su - kde-devel
    
    Note
    如果 ssh 指令无效,请查看启动 KDE 4 应用程序


    开发用户的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用户登录时自动启动。

    发行版的必需軟件包

    从原始码建构 kde4 的必需軟件包在不同的发行版也不同。您的发行版指示如下:

    您的下一个编译步骤取决于发行版提供的套件包。

    编译 kde-qt 等

    如果您不希望使用由发行版提供的軟件包,您可以自己编译,如 Qt。建构包括 CMake、Qt4(kde-qt)和 kdesupport 依赖的指示在建构的事先需要页面。请注意,automoc、phonon、strigi、soprano 以及其他一些 kdesupport 中的东西,如果您有这些东西缺失的错误,你需要取得 kdesupport。

    建构 KDE 给开发或稳定使用

    下面的命令用于从 trunk 建构最新版的不稳定 KDE。这不应该用在生产环境,但推荐给开发者。

    想要建构稳定版本,请访问:

    http://techbase.kde.org/Getting_Started/Build/KDE4.x

    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
    如果cmakekde还输出同样的错误,那试试这个:
    cd
    cmake -DCMAKE_INSTALL_PREFIX=$KDEDIR \
    -DCMAKE_BUILD_TYPE=debugfull DKDE4_BUILD_TESTS=ON \
    ~/src/KDE/kdelibs
    make
    make install
    


    发生了什么

    我们先进入源文件的根目录(第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环境下开始工作,请阅读启动KDE4环境和应用