基于Ubuntu9.10+qt-embedded-linux-opensource-src-4.5.0+tslib-1.4.1+gcc-4.3.3+gcc-4.1
目标平台:TQ2440(s3c2440)+LCD w3.5-2(东华)+kernel:2.6.30.4+QT4.5 【Qtopia-2.2.0】
Nand Flash:256MB+Nor Flash:2MB+SDRAM:64MB
S3C2440-ARMV4T(哈佛)-ARM920T-ARM9
/etc/profile文件内:
export PATH=/media/_home/opt/4.3.3/bin:$PATH 【arm-linux-gcc-4.3.3】
export PATH=/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1:$PATH
命令:
ln -s /usr/bin/make /usr/bin/gmake [ubuntu 9.10]
source /etc/profile
sudo apt-get install gcc-4.1 [? m4 autoconf automake libtool ]
tar -vxjf qt-embedded-linux-opensource-src-4.5.0_20091216 -C /media/_home/opt/EmbedSky/qt-4.5
tar -vxjf tslib-1.4.1.tar.bz2 -C /media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0
编译 tslib-1.4.1:
cd /media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1
./build
或者
./configure --host=arm-linux -disable-hp3600 --disable-arctic2 --disable-mk712 --disable-collie --disable-corgi --disable-ucb1x00 --disable-linear-h2200 --with-gnu-ld --prefix=$PWD/__install ac_cv_func_malloc_0_nonnull=yes
make && make install
编译qt-embedded-linux-opensource-src-4.5.0:【ARM】
/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/mkspecs/qws/linux-arm-g++/qmake.conf文件内:
#
# qmake configuration for building with arm-linux-g++
#
include(/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/mkspecs/common/g++.conf)
include(/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/mkspecs/common/linux.conf)
include(/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/mkspecs/common/qws.conf)
# modifications to g++.conf
QMAKE_CC = /media/_home/opt/4.3.3/bin/arm-linux-gcc
QMAKE_CXX = /media/_home/opt/4.3.3/bin/arm-linux-g++
QMAKE_LINK = /media/_home/opt/4.3.3/bin/arm-linux-g++
QMAKE_LINK_SHLIB = /media/_home/opt/4.3.3/bin/arm-linux-g++
# modifications to linux.conf
QMAKE_AR = /media/_home/opt/4.3.3/bin/arm-linux-ar cqs
QMAKE_OBJCOPY = /media/_home/opt/4.3.3/bin/arm-linux-objcopy
QMAKE_STRIP = /media/_home/opt/4.3.3/bin/arm-linux-strip
QMAKE_INCDIR = export PATH=/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1/__install/include:$PATH
QMAKE_LIBDIR = export PATH=/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1/__install/lib:$PATH
load(qt_config)
命令:
cd /media/_home/opt/EmbedSky/qt-4.5
./arm_qt4.5_build [要修改]
或者:
cd ./qt-embedded-linux-opensource-src-4.5.0
./configure -prefix /media/_home/opt/EmbedSky/qt-4.5/__install/arm/ -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libjpeg -make libs -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -armfpa -qt-mouse-tslib -I/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1/__install/include -L/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1/__install/lib
gmake
gmake install
编译qt-embedded-linux-opensource-src-4.5.0:【X86】
cd /media/_home/opt/EmbedSky/qt-4.5
./x86_qt4.5_build [要修改]
或者:
cd ./qt-embedded-linux-opensource-src-4.5.0
./configure -prefix /media/_home/opt/EmbedSky/qt-4.5/__install/x86/ -release -shared -fast -qt-sql-sqlite -plugin-sql-sqlite -nomake demos -nomake examples -silent
gmake
gmake install
程序运行:
-X86上
命令
第一步运行qvfb后【先安装】
第二步运行./myapp -qws
Sun VirtualBox内linux 外windows XP共享文件夹
工具上部菜单栏:设备(D)-分配数据空间(S)- 【+】添加数据空间 -数据空间位置 D:\share-linux ; 数据空间名称 share_linux -固定分配 -确定
内: #sudo mount -t vboxsf share_linux /mnt/share
arm下NFS挂载
开发板进入uboot下载模式
(超级终端下)输入命令0->1->192.168.1.53(PC的IP-linux虚拟机的IP)->192.168.1.6(开发板linux的IP)->255.255.255.0(开发板掩码)->/media/_home/root_nfs(PC的linux的NFS文件系统路径)->s(保存)->q(退出)-重启开发板
条件:网线通,串口通,开发板的uboot和linux-kernel有,PC的linux的NFS文件系统有,开发板的yaffs文件系统可以没有。
mount –t nfs 192.168.1.53:/media/_home/root_nfs /mnt/rootwd –o nolock
转载相关gcc版本问题bug:
用新立得软件包管理器安装gcc-4.1(自带的gcc4.3.2无法编译成功!但不用卸载),然后
$ sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc (gcc只是一个soft link,回头再链回到gcc-4.3就可以了)
如果不安装gcc-4.1,就会出现2个问题:
~~ /usr/include/bits/fcntl2.h:51: error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT in second argument needs 3 arguments
编译到这里的时候提示这个错误,是因为没有第三个参数,gcc 4.3.2严格的语法检查不让通过;你可以修改 gcc-<版本号>/gcc/collect2.c的1575行附近,加上第三个参数0777,变成 ="#c60a00" style="BACKGROUND-COLOR:transparent">redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, 0777); 然后就可以继续编译
~~ 尽管可以继续编译,但是还会出现这个问题:*** buffer overflow detected ***: mipsel-9tdmi-linux-gnu-ar terminated
哈,编译出来的这个程序根本就有问题!所以还是老老实实地安装gcc 4.1吧!
编译gcc-3.3.6的时候,出现以下错误:
/usr/include/bits/fcntl2.h:51: error: call to '__open_missing_mode'
declared with attribute error: open with O_CREAT in second argument
needs 3 arguments
这纯属软件bug,因为使用open函数的时候,如果在第二个参数中使用了
O_CREAT,就必须添加第三个参数:创建文件时赋予的初始权限.而在gcc-3.3.6/gcc/的collect2.c文件中有漏掉第三个参数的错
误,而gcc-4.3对语法错误的检查严格是出了名的(4.1就不会因此错误退出),所以就退出了.
这也是可以解决的,就是在gcc-3.3.6/gcc/collect2.c中的第1575行改为:
redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, 0777
不懂:
如果,你不想重新编译Qt-Embedded,也可以单独编译qvfb的gfxdrivers,命令如下
$ cd qt-embedded-linux-opensource-src-4.5.1/src/plugins/gfxdrivers/qvfb/
$/usr/local/Trolltech/QtEmbedded-4.5.1/bin/qmake
$ sudo make install