最近幾天由於工作安排,要將wxX11程序移植到arm開發板上。一連工作了好幾天,終於可以在板子上顯示出一個“X”號,並且可以運行wxWidgets裏面的程序,算是成功了。現就一些步驟總結如下。基本上跟網上說的差不多。
由於我們的開發所用的板子現在用不到tslib這樣的觸摸屏支持,所以這裏沒有編譯。
㈠編譯zlib-1.2.5
⒈export CC=arm-linux-gcc
⒉./configure --prefix=/path/to/install
--eprefix=/path/to/install
⒊make
⒋make install -k -i
⒌unset CC
㈡編譯ncurses
⒈export CC=arm-linux-uclibc-gcc
⒉./configure --prefix=/path/to/install --host=arm-linux --target=arm-linux --with-build-cc=gcc --with-build-cpp=g++ --without-ada --enable-widec --with-normal
⒊make HOSTCC=gcc CXX=arm-linux-uclibc-g++ && make install
㈢編譯tinyx
⒈下載七個壓縮文件(當然也可以根據自己的需要下載)
⒉-解壓縮
一定要使用命令解壓,而且要分別解壓。
tar -zxvf XFree86-4.8.0-src-1.tgz
tar -zxvf XFree86-4.8.0-src-2.tgz
tar -zxvf XFree86-4.8.0-src-3.tgz
tar -zxvf XFree86-4.8.0-src-4.tgz
tar -zxvf XFree86-4.8.0-src-5.tgz
tar -zxvf XFree86-4.8.0-src-6.tgz
tar -zxvf XFree86-4.8.0-src-7.tgz
⒊建立一個臨時目錄
cd xc/config/util/
make lndir
cp lndir /usr/local/bin/
和xc在同一個目錄下建立一個文件夾
mkdir armtinyx
cd armtinyx
lndir ../xc/
⒋在 armtinyx/config/cf目錄下修改cross.def文件並添加host.def文件(詳細文件在下邊,在cross.def中設置好你的編譯器的路徑,在host.def中設置好你的安裝路徑)
⒌在/armtinyx/lib/X11/Imakefile
#if (BuildServersOnly || !BuildX11Lib) && !XnestServer && !BuildGLXLibrary && !BuildClients && !XdmxServer
修改爲
#if (BuildServersOnly || !BuildX11Lib) && !XnestServer && !BuildGLXLibrary && !BuildClients && !XdmxServer && !TinyXServer
⒍make World
⒎make install
⒏將/path/to/install/目錄下的文件拷到目標板上,然後設置一下環境變量export PATH=$PATH:/path/to/install/bin,然後運行
Xfbdev,會出現如下錯誤
Could not open RGB file "/usr/local/arm/X11R6/lib/X11/rgb.txt"; will use built-in copy.
這時,在自己電腦的linux系統上找一個rgb.txt拷到板子上相應的路徑下就可以。
再次運行,會出現
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/misc/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/TTF/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/Speedo/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/Type1/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/CID/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/75dpi/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/100dpi/, removing from list!
Fatal server error:
could not open default font 'fixed'
Can't deallocate console 2 errno 16
這時在電腦找到misc文件夾,拷到相應的目錄
再次運行,板子上出現一個“X”,則運行成功
注:我是這方面的一個初學者,當我修改了tinyx裏的源文件之後,可以進行make World,但是不能make install,不曉得是爲什麼。
㈣編譯和運行wxX11
⒈下載wxWidgets源碼包,目前的版本爲2.8.12。
⒉解壓縮並進入源代碼目錄
tar zxvf wxWidgets-2.8.12.tar.gz
cd wxWidgets-2.8.12
⒊幾個export命令要設置一下(這是我當時的配置)
export PATH=$PATH:/buildroot/build_arm/staging_dir/bin
export CC=arm-linux-uclibc-gcc
export CXX=arm-linux-uclibc-g++
export CFLAGS="-I/home/wxX11/wxX11-arm/include"
export CXXFLAGS="-I/home/wxX11/wxX11-arm/include"
export LDFLAGS="-L/home/wxX11/wxX11-arm/lib"
export CPPFLAGS="-I/home/wxX11/wxX11-arm/include"
⒋運行configure,這裏用到的configure命令爲:
./configure --prefix=/home/wxX11/wxX11-arm-static --host=arm-linux --target=arm-linux --build=i686-pc-linux --with-x11 --without-gtk --enable-no_rtti --enable-no_exceptions --disable-threads --disable-sockets --disable-joystick
--disable-mdi --disable-printarch --disable-postscript --disable-resources --disable-prologio --with-zlib=builtin --with-libpng=builtin --with-libjpeg=builtin --with-libtiff=builtin --disable-shared --enable-static X11_CFLAGS=" -I/home/wxX11/wxX11-arm/include/X11"
X11_LIBS="-L/home/wxX11/wxX11-arm/lib"
make
make install
⒌運行wxWidgets demo,這裏的程序放在了sample目錄下,這裏有一些程序,只要進入相應的文件夾下,直接運行make就可以了,然後再生成的二進制可執行程序拷到板子上去運行,這裏我們選checklst
cd samples/checklst
make
將可執行程序checklst拷到目標板上
這裏要注意,首先要在目標板上運行Xfbdev這一個程序,出現一個小十字架,然後再運行checklst程序。
這裏要作如下設置:
首先設置目標闆闆上的兩個環境變量:
export PATH=$PATH:/home/wxX11/wxX11-arm/bin,這裏設的是Xfbdev這個程序的地址
然後
export DISPLAY=127.0.0.1:0
然後就可以運行我們的checklst程序,首先轉到該程序所在的目錄(我這裏是/home)
cd /home
Xfbdev &
./checklst
這樣,checklst程序就運行起來了。可以在目標板上插入鼠標對其進行操作。
附:
cross.def:
/* $XFree86: xc/config/cf/cross.def,v 1.3 2002/04/04 14:05:33 eich Exp $ */
/*
* This file contains redefinitions of some symbols to enable
* cross compilation: e.g. paths for include files and paths to
* compiler images. It will have to be edited to reflect these
* given your local configuration.
*/
#if 1
#undef i386Architecture
#define Arm32Architecture
#undef OptimizedCDebugFlags
#define OptimizedCDebugFlags -O2
#define ServerCDebugFlags -O2
#undef StandardDefines
#define StandardDefines -Dlinux -D__arm__ -D_POSIX_SOURCE \
-D_BSD_SOURCE -D_GNU_SOURCE -DX_LOCALE
#undef CcCmd
#define StdIncDir /usr/include
#define PreIncDir /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include
/*
*#define StdIncDir /buildroot/build_arm/staging_dir/lib/gcc/arm-linux-uclibc/3.4.2/include
*#define PreIncDir
*/
#undef PostIncDir
#define PostIncDir /buildroot/build_arm/staging_dir/lib/gcc/arm-linux-uclibc/3.4.2/include
#define CcCmd /buildroot/build_arm/staging_dir/bin/arm-linux-uclibc-gcc -L/buildroot/build_arm/staging_dir/lib -I/buildroot/build_arm/staging_dir/include
#undef CplusplusCmd
#define HasCplusplus YES
#define CplusplusCmd /buildroot/build_arm/staging_dir/bin/arm-linux-uclibc-g++
#define DoRanlibCmd YES
#define RanlibCmd /buildroot/build_arm/staging_dir/bin/arm-linux-ranlib
#undef ExtraLoadFlags
#define ExtraLoadFlags
#define FbNoPixelAddrCode
#undef TermcapLibrary
#define TermcapLibrary -L/home/wxX11/wxX11-arm/lib -lncurses
#define NCursesLibName -L/home/wxX11/wxX11-arm/lib -lncurses
#undef LdCmd
#define LdCmd /buildroot/build_arm/staging_dir/bin/arm-linux-ld
#undef LdPostLib
#define LdPostLib -L/buildroot/build_arm/staging_dir/lib
#undef ExtensionOSDefines
#define ExtensionOSDefines
#define ServerXdmcpDefines /**/
#define HostCcCmd cc
#define GzipLibrary -L/home/wxX11/wxX11-arm/lib -lz
/*
#define HostCcCmd /usr/local/arm/3.4.5/bin/arm-linux-gcc -L/usr/local/arm/3.4.5/arm-linux/lib/ -I/usr/local/arm/3.4.5/arm-linux/include/
*/
#endif
#include <cross.rules>
host.def:
#define TinyXServer YES
#define TouchScreen NO
#define HasTsLib NO
#undef XfbdevServer
#define XfbdevServer YES
#define BuildServersOnly YES
#undef CrossCompiling
#define CrossCompiling YES
#define XF86Server NO
//=======================================
#ifndef HasNCurses
#define HasNCurses YES
#endif
#ifndef HasZlib
#define HasZlib YES
#endif
//=========================================================
#define XdmxServer NO
#define XnestServer NO
#define XsunServer NO
#define Xsun24Server NO
#define XsunMonoServer NO
#define XsunLynxServer NO
#define XSavageServer NO
#define XIgsServer NO
#define XTridentServer NO
#define XchipsServer NO
#define Xmach64Server NO
#define Xi810Server NO
#define XSis530Server NO
#define XTrioServer NO
#define XipaqServer NO
#define XTS300Server NO
#define XItsyServer NO
#define XvesaServer NO
#define XDarwinServer NO
#define XVirtualFramebufferServer NO
#define XprtServer NO
#define BuildXprintClients NO
#define ProjectRoot /path/to/install
#define NothingOutsideProjectRoot YES
#define BuildLibraries YES
#define BuildDocs NO
#undef BuildRender
#define BuildRender YES
#define UseRgbTxt YES
#define OmitSnfSupport YES
#define HasMTRRSupport NO
#define UseX86Emu NO
#define BuildGlxExt NO
#define XF86INT10_BUILD X86INT10_STUB
#define XInputDrivers mouse keyboard
移植wxX11到開發板上
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
arm平臺的opencv+ffmpeg交叉編譯
超级乐乐gogogo
2020-06-16 05:06:42
cmake編譯zipper錯誤提示: Please check that LIBZ_LIBRARY-NOTFOUND
fightingTony
2018-09-15 01:12:14
Tslib arm 6410 開發板的移植(帶源碼)
叶落-飘零
2018-09-03 15:48:37
移植Boa服務器到S3C2440
jinchizhe
2018-09-01 17:13:16
mini_httpd 嵌入式的移植過程
夜晚有3年
2018-08-31 18:00:08
WebKit中一個設置項起作用的流程
l360220954
2018-08-27 17:43:16
移植sqlite3到嵌入式平臺上
l360220954
2018-08-27 17:43:14
wxX11移植到arm板上(序)
l360220954
2018-08-27 17:43:14
mysql移植到a20
bwangccc
2018-08-26 07:05:02
qt5.9.5移植arm
bwangccc
2018-08-26 07:05:00
移植mysql5_7,遇到問題,尚未解決
bwangccc
2018-08-26 07:04:47
也來小結一下configure中的配置參數host和target的含義和區別
r_luo
2018-08-23 05:13:26
在iTop4412上移植Qt5.6.3
immortal018
2018-08-22 11:52:36