Ubuntu9.10+qt-embedded-linux-opensource-src-4.5.0+tslib-1.4.1+gcc-4.3.3+gcc-4.1移植经验

来源:互联网 发布:如何登陆淘宝子账号 编辑:程序博客网 时间:2024/04/28 21:37
 

基于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

原文出处:http://www.eefocus.com/wenes1/blog/10-05/190292_c6325.html#articletop