如何为PowerPC交叉编译Qt X11?

时间:2010-10-06 22:36:38

标签: qt embedded x11 cross-compiling powerpc

我一直在尝试为PowerPC编译Qt X11交叉编程一段时间并且遇到各种问题。

根据我的Qt支持提供的信息,所有人需要做的是:

  1. 创建新的mkspec
  2. 复制mkspec/中的现有目录我使用了linux-g ++并对其进行了修改。
  3. 修改qmake.conf以使用您的工具链,库和包含
  4. 运行以下configure命令:

    ./configure -arch <your arch> -xplatform <your mkspec> -prefix <where you want Qt installed> <other options>

  5. 配置完成后,运行make,然后make install。您将在-prefix选项中指定的目录中找到Qt。

  6. 有各种各样的问题。

1 个答案:

答案 0 :(得分:1)

我的解决方案:

  1. mkspecs/linux-g++复制到mkspecs/linux-g++-<my arch>
  2. 修改mkspecs/linux-g++/qmake.conf,如下例所示。 阅读示例文件中的注释以了解具体信息
  3. 我不需要修改qplatformdefs.h,尽管你可能会修改你的架构
  4. 使用问题中的选项运行配置脚本以及makemake install
  5. 现在您可以针对交叉编译的Qt X11编译代码。已为您的主机编译mocuic等,因此他们会相应地生成代码。
  6. 要使用交叉编译的Qt库运行软件,只需将/libs从安装Qt的位置复制到目标lib文件夹,或者将其放入其他文件夹并将LD_LIBRARY_PATH设置为包括Qt lib文件夹。
  7. 示例qmake.conf:

    #
    # qmake configuration for linux-g++-ppc_74xx
    #
    
    MAKEFILE_GENERATOR = UNIX
    TEMPLATE           = app
    CONFIG             += qt warn_on release incremental link_prl
    QT                 += core gui
    QMAKE_INCREMENTAL_STYLE = sublib
    
    include(../common/g++.conf)
    include(../common/linux.conf)
    
    #
    # Modifications to g++.conf
    #
    # my_arch-g++ is the full executable path of your g++, make sure your PATH
    # contains the directory for your toolchain
    #
    QMAKE_CC         = my_arch-g++
    QMAKE_CXX        = my_arch-g++
    QMAKE_LINK       = my_arch-g++
    QMAKE_LINK_SHLIB = my_arch-g++
    
    #
    # I had to provide includes and libraries for packages my toolchain does not
    # provide this is mostly X11 and glib stuff.  You'll either have to
    # cross-compile it yourself or get it from your distribution
    #
    QMAKE_CFLAGS     = -I/path/to/your/includes \
                       -L/path/to/your/libs
    QMAKE_CXXFLAGS   = $$QMAKE_CFLAGS
    
    #
    # Modifications to linux.conf
    #
    # Same as g++ stuff above
    #
    QMAKE_AR          = my_arch-ar cqs
    QMAKE_OBJCOPY     = my_arch-objcopy
    QMAKE_STRIP       = my_arch-strip
    
    #
    # I had all kinds of problems linking Qt source with X11 depending on how I
    # specified the include paths.  My toolchain provided most X11 functionality
    # and I just had to add missing parts in the CXXFLAGS and CFLAGS,
    # but specifying exactly where to find X11 includes and libraries specific
    # to my toolchain fixed some of the issues I experienced
    #
    QMAKE_INCDIR_X11  = /path/to/your/toolchain/includes
    QMAKE_LIBDIR_X11  = /path/to/your/toolchain/libs
    
    load(qt_config)
    

    <强>更新

    此解决方案适用于“独立”编译。如果你需要为Angstrom,OpenEmbedded,Android,OpenWRT等构建Qt X11,你将不得不使用他们各自的构建系统进行正确的编译。例如,对于OpenEmbedded目标(即Angstrom),您必须编写BitBake配方。

    由于需要支持旧系统,因此出现此问题。使用Embedded Qt不是一个选择。对于新项目,我强烈建议使用Embedded Qt。