Getting Started/Build/Troubleshooting: Difference between revisions

    From KDE TechBase
    (changed meinproc to meinproc4)
    Line 79: Line 79:
    * If you get  
    * If you get  
      KUniqueApplication: Cannot find the D-Bus session server
      KUniqueApplication: Cannot find the D-Bus session server
    check if you can access the display, e.g. type
    make sure you can access the display, e.g. type
      xclock
      xclock
    and see if a clock appears on the screen.
    then a clock must appear on the screen. If it does and the error persists, start your shell using
    dbus-launch xterm
    and start your program in there.


    * If you get something like
    * If you get something like
    Line 89: Line 91:
      Aborted (core dumped)
      Aborted (core dumped)
    You need to install kdebase - see above. It is enough to install the "runtime" directory from kdebase.
    You need to install kdebase - see above. It is enough to install the "runtime" directory from kdebase.


    == General troubleshooting ==
    == General troubleshooting ==

    Revision as of 18:19, 18 March 2008


    Getting_Started/Build/KDE4/Troubleshooting


    Building KDE4 From Source/Troubleshooting
    Tutorial Series   Getting Started
    Previous   KDE SVN Quickstart Guide
    What's Next   KDE SVN Quickstart Guide
    Further Reading   n/a

    This page contains some troubleshooting tipe for issues you may encounter while building kde4 from source.

    Many of the issues listed here may be out of date.

    Issues building kdelibs

    If you have problems compiling kdelibs, first make sure the software in the Required Software section above is installed and works. Other possible hints include:

    • If the cmakekde command fails stating that CMake requires an out of source build directory, remove ~/kde/src/KDE/kdelibs/CMakeCache.txt, and try again.

    If cmakekde still gives the same error then try this

    cd
    cmake -DCMAKE_INSTALL_PREFIX=$KDEDIR \
    -DCMAKE_BUILD_TYPE=debugfull \
    -DKDE4_BUILD_TESTS=ON \
    ~/kde/src/KDE/kdelibs
    make
    make install
    
    • If you received an error stating "Please create a separate build directory and run 'cmake path_to_kdelibs [options]' there.", then you need to change to your build directory before running cmakekde. (e.g cs KDE/kdelibs && cb && cmakekde) If the message stays, run 'svn status' in the kdelibs directory and remove all files labeled with '?'.
    • If Qt wasn't found or the wrong version of Qt was found, make sure that the qmake from the Qt you need is the first qmake in the path.
    • If qmake wasn't found and you are using Debian packages, /usr/bin/qmake probably points to a wrong qmake version. To fix this run as root:
    update-alternatives --config qmake
    
    • If the problems persist, try the CMake make-option --keep-going.
    • Here you need the libungif library, otherwise you will get an error message like "Could NOT find GIF".
    • Qt-4.3 upgrade: if you get a link error in kjsembed talking about QScriptEngine, edit CMakeCache.txt in kdelibs and remove the lines that talk about QT_QTUITOOLS_LIBRARY, then type make again (that static library has a new dependency, and the cmake code that adds it needs to run).
    • if you get CMake Error: KDE Requires Qt to be built with SSL support

    , install openssl-devel, remove CMakeCache.txt and re-compile QT.

    • if you get kdelibs/kimgio/ico.cpp:188: undefined reference to `QImage::jumpTable()' it means you compiled QT without QT3 support(no, linking to a true QT3 install won't work)
    • if none of the errors above match yours, you might just try a quick'n'dirty make clean in kdelibs.
    • if you get "The PCRE regular expression library has not been found >=4.5 " then watch out the http://techbase.kde.org/index.php?title=Getting_Started/Build/KDE4/Kubuntu_and_Debian (Getting Started/Build/KDE4/Kubuntu and Debian-> kdelibs dependancies ->Recommended packages ) or

    remove ../.. build/kdelibs cs KDE/kdelibs cmakekde

    • [stub] What to do if you have a problem like kde-config.cpp:56: undefined reference to `KLocalizedString::~KLocalizedString()' and

    /Depot/Temp/kdelibs-4.0.2/kdecore/kde-config.cpp:197: undefined reference to `KConfigGroup::readPathEntry(char const*, QString const&) const' and kde-config.cpp:66: undefined reference to `ki18n(char const*)'? Seems to happen with some localization stuff


    Issues building kdepimlibs

    If you have trouble compiling kdepimlibs:

    • the cmakekde command may require a later version of the gpgme library. This is available from the project's web site: http://www.gnupg.org/download/index.html - please note that the build of gpgme also requires libgpg-error, also available from the same location. Both libraries are installed by the "./configure", "make" and "sudo make install" sequence, with the gpgme library configured with the additional "--with-gpg-error-prefix" parameter. You may need to overwrite your existing "/usr/bin/gpgme-config" file with the newer version for the kdepimlibs to pick up the new install.

    Issues building kdebase

    If you have troubles compiling kdebase:

    • XINE is needed to compile kdebase-runtime
    • Make sure you have the libxss headers installed. (Usually you got undefined references on xscreensaver objects if you do not have those headers)
    • which meinproc4 has to deliver /home/kde-devel/kde/bin/meinproc4
    • if cmakekde can not find the path of kdepimlibs, edit the file $KDE_BUILD/KDE/kdebase/CMakeCache.txt and manually set KDEPIMLIBS_INCLUDE_DIR:PATH=$KDE_BUILD/kdepimlibs
    • if you get an error saying "Please set the following variables: X11_XTest_LIB (ADVANCED)", install the devel package of Xtst. On some systems, this is packaged separately from xext and called x11proto-xext-dev or libxtst-dev. You may also need to remove the CMakeCache.txt file in the build dir after installing the package.
    • the same for "X11_Xinerama_LIB (ADVANCED)" where you will need the devel package for xinerama.
    • if you get an error complaining about a missing variable X11_Xrandr_LIB, you need the devel package for libxrandr (libxrandr-devel on ubuntu-systems)
    • if you get the error "Please set the following variables: FONTCONFIG_INCLUDE_DIR, FONTCONFIG_LIBRARIES (ADVANCED)", then you need to install the libfontconfig headers
    • if you get the error "CMake Error: This project requires some variables to be set, and cmake can not find them. Please set the following variables: KMETADATA_LIBRARIES", you need to install soprano from kdesupport and to rebuild kdelibs
    • if you get the error "‘XserverRegion’ does not name a type" make sure you have libxcomposite headers installed (libxcomposite-dev in ubuntu)
    • if you get the error "CMake Error: This project requires some variables to be set, and cmake can not find them. Please set the following variables: QT_QTOPENGL_LIBRARY (ADVANCED) ", try editing CMakeCache.txt and setting QT_QTOPENGL_LIBRARY:FILEPATH=/home/kde-devel/qt-copy/lib/libQtOpenGL.so
    • if you get messages as "KDE4_INSTALL_HANDBOOK() is deprecated. Remove it please. Now all is done in KDE4_CREATE_HANDBOOK." then, either find the files containing the offending line and comment it out manually, or run the following script in ~/kde/src/KDE/kdebase: macros_corrector.sh. It will just REMOVE the line that has "kde4_create_handbook" in it from all the found files.
    • If you get an error (in ubuntu) concerning libxtst.so install the libxtst-dev package
    • If you get the message "kdebase/workspace/kcontrol/kxkb/x11helper.cpp:131: error: ‘KGlobal’ has not been declared", you might need to install libxklavier development packages.
    • If you get "/home/kde-devel/kde/lib/libkio.so: undefined reference to `Strigi::AnalysisResult::AnalysisResult(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long, Strigi::IndexWriter&, Strigi::StreamAnalyzer&)'" you probably have an outdated version of strigi installed by your distro. By the way, after update the strigi, you must recompile kdelibs for a new libkio.so.
    • If you get the issue "can't find REQUIRED package Blitz", install qimageblitz4 and qimageblitz-dev

    Running programs

    • If you get
    KUniqueApplication: Cannot find the D-Bus session server
    

    make sure you can access the display, e.g. type

    xclock
    

    then a clock must appear on the screen. If it does and the error persists, start your shell using

    dbus-launch xterm
    

    and start your program in there.

    • If you get something like
    Error: standard icon theme "oxygen" not found!
    
    ASSERT: "!isEmpty()" in file /home/kde-devel/qt-copy/include/QtCore/../../src/corelib/tools/qlist.h, line 245
    Aborted (core dumped)
    

    You need to install kdebase - see above. It is enough to install the "runtime" directory from kdebase.

    General troubleshooting

    What can happen over time, after some svn up commands, is that some of the tools used in the KDE build chain change their output format. For example, kcfg files are read by kconfig_compiler to produce configuration dialogs. CMake cannot detect those changes, and the compilation might fail. A workaround is to always force a re-generation of all such files:

    find $KDE_SRC/KDE/kdebase -name "*.kcfg" | xargs touch
    

    The same applies to ui files as produced by Qt designer.

    Locked sessions

    When installing KDE 4 as a user, one will not be able to unlock a locked session. To work around this issue you can either:

    su chown root.root $KDEDIR/lib/kde4/libexec/kcheckpass
    

    or

    chmod 755 $KDEDIR/lib/kde4/libexec/kcheckpass
    

    Also you have to add a "kde" service in /etc/pam.d/ folder

    For example for RH/Fedora based distros:

    #%PAM-1.0
    auth       include      system-auth
    account    include      system-auth
    password   include      system-auth
    session    include      system-auth
    

    while for debian/Kubuntu (requires having libpam-dev installed while building kdebase):

    1. Standard Un*x authentication.

    @include common-auth @include common-account @include common-session @include common-password