本帖最后由 明何 于 2012-4-22 20:06 编辑
首先介绍下编译环境:
ARM板上:
重新烧写了2.6.30的内核
用的是Qt4.5的文件系统
PC机器:
使用的是ubuntu 11.04
已经弄了4.3.3版本和3.4.5的交叉编译器,但是不知道为什么使用arm-linux-g++ -v时候查询的又是gcc version 3.4.5。这东西怎么改我也不清楚
已经装上了资料盘中的qt-embedded-linux-opensource-src-4.5.0。arm版本的已经没有问题了。
然后qt-creator-linux-x86-opensource-1.3.0.bin也给顺便装了。
在终端这样使用环境变量:
然后正常make,生成了一个可执行文件。接着我就把hello_cn复制到了ARM板子上。结果提示(我传过来的时候改了名字)
- [root@EmbedSky bin]# pwd
- /opt/qt-4.5/bin
- [root@EmbedSky bin]# ./myhello
- -/bin/sh: ./myhello: not found
- [root@EmbedSky bin]#
复制代码
想了半天,觉得可能是编译的时候内核版本的问题,回电脑后查结果是这样的。
- root@minghe-Inspiron-1420:/opt/EmbedSky/qt-4.5/pro/hello_cn# file hello_cn
- hello_cn: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), for GNU/Linux 2.4.3, not stripped
复制代码
然后我就做了一个修改:
/opt/EmbedSky/qt-4.5/__install/arm/mkspecs/qws/linux-arm-g++/qmake.conf中的内容修改成了:
- #
- # qmake configuration for building with arm-linux-g++
- #
- include(../../common/g++.conf)
- include(../../common/linux.conf)
- include(../../common/qws.conf)
- # modifications to g++.conf
- QMAKE_CC = /opt/EmbedSky/4.3.3/bin/arm-linux-gcc
- QMAKE_CXX = /opt/EmbedSky/4.3.3/bin/arm-linux-g++
- QMAKE_LINK = /opt/EmbedSky/4.3.3/bin/arm-linux-g++
- QMAKE_LINK_SHLIB = /opt/EmbedSky/4.3.3/bin/arm-linux-g++
- # modifications to linux.conf
- QMAKE_AR = arm-linux-ar cqs
- QMAKE_OBJCOPY = arm-linux-objcopy
- QMAKE_STRIP = arm-linux-strip
- load(qt_config)
复制代码
现在在编译自带的pro中的hello_cn时遇到以下错误:
- /opt/EmbedSky/qt-4.5/__install/arm//lib/libQtGui.so: undefined reference to `feof@GLIBC_2.0'
- /opt/EmbedSky/qt-4.5/__install/arm//lib/libQtGui.so: undefined reference to `mount@GLIBC_2.0'
- /opt/EmbedSky/qt-4.5/__install/arm//lib/libQtCore.so: undefined reference to `pthread_setschedparam@GLIBC_2.0'
- collect2: ld returned 1 exit status
- make: *** [hello_cn] 错误 1
复制代码
希望求解答。
现在我一直觉得setARM_env文件里面的有错。附上其内容
- #!/bin/sh
- export QPEDIR=/opt/EmbedSky/qt-4.5/__install/arm/bin
- export QTOPIA_DEPOT_PATH=/opt/EmbedSky/qt-4.5/__install/arm/bin
- export QTDIR=/opt/EmbedSky/qt-4.5/__install/arm/bin
- export DQTDIR=/opt/EmbedSky/qt-4.5/__install/arm/bin
- export QMAKE=/opt/EmbedSky/qt-4.5/__install/arm/bin/qmake
- export UIC=/opt/EmbedSky/qt-4.5/__install/arm/bin/uic
- export TMAKEDIR=/opt/EmbedSky/qt-4.5/__install/arm/bin
- export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
- export PATH=$QPEDIR/bin:$QTDIR/bin:$DQTDIR/bin:$TMAKEDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QPEDIR/lib:$QTDIR/lib:$DQTDIR/lib:$LD_LIBRARY_PATH
复制代码
因为我查看这些变量的时候,有些变量值却没有。 如果是这个错了,能不能说说这个应该怎么改么?
我不清楚里面有什么地方出错了。
突然又想到一种情况:会不会是我编译qt4.5的时候用的arm-linux-gcc版本不对。
|