zoukankan      html  css  js  c++  java
  • 【转】qt交叉环境编译

    突然想到一个问题,是不是搞QT的人都清楚qt的名字,以及之间的关系。把名字变来变去,似乎是一件“好玩”的事。对开发者来说,是一件“痛苦”的事。

    对于QT编译,我想,创立"qt编译学"是很有必要的,哈哈。

    qt编译是否成功,依赖系统环境(包括环境变量,需要的库),还有开发者操作。

    从心理学侦探学犯罪学的角度来看,编译qt(对于其他编译好像也可以),应该把自己当作侦探,不要期望凶手会自首,应该从每个error上发现线索,抓到凶手。

    为了方便设置,写了一个设置环境变量的shell脚本qtenv,去掉原本已经被我设得不堪入目的变量,重新再来一遍。干净的,顺序上qt优先,然后交叉编器,最后是系统(不清楚是否有关系)。

    1. #!/bin/sh  
    2. #by oChapman   
    3. #2009-5-29  
    4. #qt environment setting.  
    5. echo "setting env"  
    6. export QTDIR=/work/qt-2.3.7  
    7. export QPEDIR=/work/qtopia-1.7.0  
    8. export LD_LIBRARY_PATH=/usr/local/arm-linux/qt_toolchain/qt-2.3.2/lib:/usr/local/arm-linux/lib:/usr/local/bin:/usr/local/lib:/lib  
    9. export TMAKEDIR=/work/tmake-1.11  
    10. export TMAKEPATH=/work/tmake-1.11/lib/qws/linux-arm-g++  
    11. export PATH=/work/tmake-1.11/bin:/usr/local/arm-linux/bin:/usr/local/arm-linux/arm-linux/lib:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games  
    12. export CC=arm-linux-gcc  
    13. echo "ok"  

    运行之(注意, 是".  ~/qtenv" ),

    之后,按照编译步骤,再一次出现成功。

    系统:ubuntu 8.04

    QT:

    qt-2.3.7

    qtopia-1.7.0

    tmake-1.11

    上面qt-2.3.2是在交叉编译器arm-linux里的。

    回顾一下曾经的error.在我的系统上。下面的错误的根本原因是环境变量。

    /work/qt-2.3.7/lib/libqte.so: undefined reference to `QMultiLineEdit::undoAvailable(bool)'
    /work/qt-2.3.7/lib/libqte.so: undefined reference to `QWSClient::connectionClosed()'
    /work/qt-2.3.7/lib/libqte.so: undefined reference to `QActionGroup::selected(QAction*)'
    /work/qtopia-1.7.0/lib/libqpe.so: undefined reference to `QComboBox::className() const'
    /work/qt-2.3.7/lib/libqte.so: undefined reference to `QIconView::mouseButtonPressed(int, QIconViewItem*, QPoint const&)'
    collect2: ld returned 1 exit status
    make[1]: *** [/work/qtopia-1.7.0/bin/sysinfo] Error 1
    make[1]: Leaving directory `/work/qtopia-1.7.0/src/applications/sysinfo'
    make: *** [applications/sysinfo] Error 2

    ============================================================

    ochapman@ochapman-desktop:/work/qt-2.3.7$ make sub-src 
    cd src/moc; make
    make[1]: Entering directory `/work/qt-2.3.7/src/moc'
    make[1]: Nothing to be done for `all'.
    make[1]: Leaving directory `/work/qt-2.3.7/src/moc'
    rm -f bin/moc
    cp src/moc/moc bin/moc
    make -f src-mt.mk
    make[1]: Entering directory `/work/qt-2.3.7'
    (not building threaded Qt)
    make[1]: Leaving directory `/work/qt-2.3.7'
    cd src; make
    make[1]: Entering directory `/work/qt-2.3.7/src'
    /work/qt-2.3.7/bin/moc kernel/qthread_unix.cpp -o kernel/qthread_unix.moc
    /work/qt-2.3.7/bin/moc: 1: Syntax error: word unexpected (expecting ")")
    make[1]: *** [kernel/qthread_unix.moc] Error 2
    make[1]: Leaving directory `/work/qt-2.3.7/src'
    make: *** [sub-src] Error 2

    =============================================================

    chapman@ochapman-desktop:/work/qtopia-1.7.0/src$ make
    make -C libraries/qtopia
    make[1]: Entering directory `/work/qtopia-1.7.0/src/libraries/qtopia'
    /work/qt-2.3.7/bin/uic passwordbase_p.ui -o ./passwordbase_p.h
    /work/qt-2.3.7/bin/uic: error while loading shared libraries: libqutil.so.1: cannot open shared object file: No such file or directory
    make[1]: *** [passwordbase_p.h] Error 127
    make[1]: Leaving directory `/work/qtopia-1.7.0/src/libraries/qtopia'
    make: *** [libraries/qtopia] Error 2

    =============================================================

  • 相关阅读:
    @transactional注解下失效
    string.format格式化字符串中转义大括号“{}”
    ArrayList循环遍历并删除元素的常见陷阱
    HashMap、HashTable与ConcurrentHashMap区别
    -webkit-,-moz-,-ms-,-o-具体指什么了?
    常用js正则表达式大全
    hashcode详解
    如何区分oracle服务器、oracle客户端、plsql?
    Oracle Client(客户端) 安装与配置
    Openresty使用
  • 原文地址:https://www.cnblogs.com/dolphi/p/2638789.html
Copyright © 2011-2022 走看看