1. 程式人生 > >wxX11移植到arm板上

wxX11移植到arm板上

最近幾天由於工作安排,要將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 HasNCursesYES
#endif


#ifndef HasZlib
#define HasZlibYES
#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

最近幾天由於工作安排,要將wxX11程式移植到arm開發板上。一連工作了好幾天,終於可以在板子上顯示出一個“X”號,並且可以執行wxWidgets裡面的程式,算是成功了。現就一些步驟總結如下。基本上跟網上說的差不多。 由於我們的開發所用的板子現在用不到tslib這樣的觸控式螢幕支援,所以這裡沒有編譯。 ㈠編譯

02-linux-armopencv移植--終極解決方案之buildroot基礎配置(原創)

接前一篇《迅為4412-linux-arm板上opencv移植–終極解決方案(原創)》。 平臺:Exynos4412。 實驗平臺:iTOP-4412-精英版。 編譯平臺:Ubuntu12.04。 編譯器版本:arm-4.4.1,懶人直接用的開發板自帶的。 buildroot版本:直接

01--迅為4412-linux-armopencv移植--終極解決方案(原創)

—本人由於需要做嵌入式圖形處理,需要用到opencv。網上的移植教程倒是很多,但是幾乎沒有可以正常使用的。 作者經過大量嘗試,最後發現,網上的文章,原創作者漏掉了極其非常關鍵的“glibc”庫問題的描述,原創作者的檔案系統可能使用自己的,其它轉載的大部分都沒有完全實現opencv的移植。

opencv2.4.9移植arm

感謝這個資源共享的世界!美好的世界! 一:環境      ubuntu 14.0.4      交叉編譯器:4.5.1 二:交叉編譯器的安裝(後面有所有的檔案下載地址) 三:依賴庫的安裝:(沒寫解壓的命令)   1):          zlib-1.2.7.tar.gz

qt應用程式向arm移植中文不能正確顯示的解決辦法

QApplication a(argc, argv); QTextCodec *codec = QTextCodec::codecForName("gbk"); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(code

sqlite3 在arm的編譯

對於一個 使用了資料庫的程式,編譯會與普通程式不同,首先編譯會用到sqlite3 解壓編譯之後的buid資料夾下的 檔案庫。 編譯: arm-linux-gnueabif-gcc -o test test.c test.h -I /home/milan/dufan/te

編譯在arm使用的sqlite3的靜動態庫

採用的是sqlite-autoconf-3080002.tar.gz 解壓 tar xvf sqlite-autoconf-3080002.tar.gz 進入 cd sqlite-autoconf-3080002/ 採用的是 arm-none-linux-gnueab

QT程式,如何在ARM執行

寫這篇文章,主要是為了說明怎麼讓PC機下編譯好的QT程式移植到板子上執行。在說明之前,我們要了解一個事情,就是QT。QT是一個跨平臺的開發工具,具有很好的移植性,它所依賴的庫檔案在PC機上和在ARM上是不一樣的,那麼我要怎麼做呢?很簡單,就是重新編譯已經寫好的QT程式。為什麼需要重新編譯,第一,ARM的CPU

移植OpenCV+QT到ARM S3C6818開發(2)

續《移植OpenCV+QT到ARM S3C6818開發板上(1)》 安裝QT開發環境到宿主機 解壓qt5.7.0原始碼(時間稍稍有點長,為待會編譯捏了一把汗啊!) 解壓完之後進入原始碼根目錄,終端輸入: sudo ./configure -v -release

Windows下通過ARM目標的gdbserver進行遠程調試的方法

gdbserver armv4t CodeSourcery 因某種需要,要在Windows平臺上進行程序開發,目標板是基於Micrel芯片(ARMv4t)做的,上面運行有Linux最小系統,只有最基本的命令,需要在Windows平臺上交叉編譯能在ARMv4t上運行的目標代碼,並且還要能進行遠程調試

arm開發找不到/dev/i2c-*設備

linu arm The iic oar fig com 在一起 直接 最近在調試arm與外設iic通訊是,想來個投機取巧,先不寫單獨的驅動,直接通過iic bus設備是否可以連接到外設,然後發現在板子上找不到“/dev/i2c-n”的設備,標準的系統應該都是有的。 回去看

ARM平臺藍芽協議棧Bluez的移植使用和配置(寫的狠不錯) .

目錄(?)[-] 相關說明 網站資源 工作環境 編譯 核心 Bluez Lib / Utils 藍芽硬體初始化及基礎服務啟動 何謂硬體初始化 硬體初始化步驟

ARM開發搭建sshd環境(嘔血歷程)

安裝按照這個部落格:https://blog.csdn.net/u013711616/article/details/53044918 zlib-1.2.8.tar.gz  openssl-0.9.8d.tar.gz  openssh-5.6p1.tar.gz 資料已打包,見

[ARM]膝型電腦、VM虛擬機器、開發三者互ping

前言: 筆者在做NFS掛接練習時,發現網上的資料大部分是膝上型電腦(以下簡稱PC)和虛擬機器PING、PC和開發板PING,這樣的方式很明顯不是我們想要的。 筆者需要使用無線網絡卡上網,使用有線網絡卡

Tslib和Qt 4.8.4與在開發移植

Linux:Ubuntu 12.04 X86 QT:4.8.4 交叉編譯工具鏈:gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) 安裝如下的軟體  sudo apt-get install automake sudo a

將lrzsz工具移植ARM開發 ---只通過串列埠實現window和ARM之間檔案互傳

事情背景:由於需要在windows和ARM板之間只通過串列埠傳輸檔案(windows的檔案只通過串列埠傳輸到ARM板上) 這時超級終端SecureCRT+lrzsz工具可以完成這項使命!(其他終端軟體

購買開發後在iTOP4412開發移植SDIO介面WIFI方法

       近期需要把WiFi無線網路功能移植到在iTOP4412 開發平臺,查閱了相關資料,經過一段時間的研究、除錯,終於成功,將WiFi功能移植到了開發板上面,這裡筆者記錄移植過程及注意事項,方便以後工作需要。     iTOP4412開發板的WiFi模組與板卡之間

SDL在開發移植

 1. 在宿主機上安裝SDL庫 1)在宿主機的根目錄新建一個資料夾dai,然後將SDL庫的安裝包放到根目錄下的dai資料夾下,利用終端解壓SDL安裝包。 [[email prote

Qt移植到開發如何使用觸控式螢幕及改變介面大小

 觸控式螢幕: 二、安裝完後,載入觸控式螢幕驅動:insmod ts.ko,然後執行./ts_calibrate 進行五點校準,之後會在/etc/下生成一個檔案 pointercal,要有這個觸控式螢幕才能用。 三、修改/etc/profile:         新增這幾

qt creator 檔案移植到開發執行 的全過程

因為板子已經有qt庫檔案了 我們不進行移植qt庫,1 安裝arm-linux-gcc交叉編譯器2 編譯 qt4.7.1 原始碼(原始碼有點錯自己google修改)3 安裝qtcreator4 配置qt create的 debug 加入編譯好的qt4.7.1 qmake 檔案