日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

arm-linux-gcc编译gtk程序,【又7】Arm 版GTK编译

發布時間:2024/9/19 linux 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arm-linux-gcc编译gtk程序,【又7】Arm 版GTK编译 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

###### 轉自http://hi.baidu.com/wstone_h/item/b7fe9ac1f2ba7242a8ba94ec

## 交叉編譯gtk+dfb+arm手記

參考文獻1:2:3:4:1:2:這里主要參考了文獻1,雖然編譯后還有許多不足,但是交叉后的基本沒啥大問題,哈哈。對于包的版本選擇,考慮了依賴的關系,所以對于依賴包選擇了最新的,不過在編譯gtk+時,好像新版本有較大的改動,因此這里選擇了gtk+-2.12.9。文中有一個不足的地方就是安裝的路徑了,因為這個路徑是要加載到板子上的,所以要自行考慮。

包的下載地址:

1、tslib:tslib是cvs的版本,所以只能在網絡上找了

2、tiff : ftp://ftp.gtk.org/pub/gtk/v2.10/dependencies/tiff-3.7.4.tar.gz

3、jpegsrc.v6b :ftp://ftp.gtk.org/pub/gtk/v2.10/dependencies/

4、、glib-2.19.0 :ftp://ftp.gtk.org/pub/glib/2.19/

6、pango-1.20.2 :ftp://ftp.gtk.org/pub/pango/1.20/

7、、、、、、、、、、jpegsrc.v6b,libpng是圖像的包,如不需要,可以考慮不下載,下載時要注意哪些是必須的包,哪些不是必要的包

1、tslib 1.4

export PREFIX=/usr/gtkdfb

./autogen.sh

echo “ac_cv_func_malloc_0_nonnull=yes” >arm-linux.cache

CC=arm-linux-gcc ./configure –host=arm-linux –prefix=$PREFIX –cache-file=arm-linux.cache

make

make install

編譯完成后可以在目標位置看到4個文件夾

2、glib-2.19.0

export LDFLAGS=-L$PREFIX/lib

export CFLAGS=”-g -I$PREFIX/include”

export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig

echo ac_cv_type_long_long=yes>arm-linux.cache

echo glib_cv_stack_grows=no>>arm-linux.cache

echo glib_cv_uscore=no>>arm-linux.cache

echo ac_cv_func_posix_getpwuid_r=yes>>arm-linux.cache

echo ac_cv_func_posix_getgrgid_r=yes>>arm-linux.cache

在網路上有些人是遇到4個錯誤,可能本人比較特殊,呵呵。編譯多次,每次都是5個的,至于如何處理,請參考文獻3中對于glib的詳細分析,接著操作:

CC=arm-linux-gcc ./configure –host=arm-linux –build=i386-linux –prefix=$PREFIX –cache-file=arm-linux.cache

make

make install

交叉編譯成功后在目標位置多出個/share文件夾

3、atk-1.24.0

CC=arm-linux-gcc ./configure –host=arm-linux –build=i386-linux –prefix=$PREFIX

make

make install

4、jpeg-6b

export CC=arm-linux-gcc

CC=arm-linux-gcc ./configure –host=arm-linux –prefix=$PREFIX

修改生成的Makefile文件:

# The name of your C compiler:

CC= gcc 該成CC=arm-linux-gcc (根據你自己交叉編譯器的位置修改)

# library (.a) file creation command

AR= ar rc 該成AR= arm-linux-ar rc (同上)

# second step in .a creation (use “touch” if not needed)

AR2= ranlib 該成AR2=arm-linux-ranlib (同上)

mkdir $PREFIX/man

mkdir $PREFIX/man/man1

make

make install

make install-lib

5、zlib-1.2.3

CC=arm-linux-gcc ./configure –prefix=$PREFIX -shared

make

make install

6、libpng-1.2.33

CC=arm-linux-gcc ./configure –host=arm-linux –prefix=$PREFIX

make

make install

7、expat-2.0.1

CC=arm-linux-gcc ./configure –host=arm-linux –prefix=$PREFIX

make

make install

8、freetype-2.3.7

CC=arm-linux-gcc ./configure –host=arm-linux –prefix=$PREFIX

make

make install

9、libxml2-2.6.31

CC=arm-linux-gcc ./configure –host=arm-linux –prefix=$PREFIX

make

make install

10、fontconfig-2.6.0

export LIBXML2_CFLAGS=-I$PREFIX/include/libxml2

export LIBXML2_LIBS=”-L$PREFIX/lib -lxml2”

CC=arm-linux-gcc ./configure –host=arm-linux –prefix=$PREFIX –with-freetype-config=$PREFIX/bin/freetype-config –with-arch=arm

make

make install

11、tiff-3.7.4

CC=arm-linux-gcc ./configure –host=arm-linux –prefix=$PREFIX –enable-shared

make

make install

12、DirectFB-1.3.0

CC=arm-linux-gcc ./configure –host=arm-linux –prefix=$PREFIX –with-gfxdrivers=none –enable-png –enable-jpeg –enable-tiff –enable-zlib –enable-sdl=no –enable-gif=no –disable-x11

make

make install

13、pixman-0.12.0

CC=arm-linux-gcc ./configure –host=arm-linux –prefix=$PREFIX

make

make install

14、cairo-1.8.4

CC=arm-linux-gcc ./configure –host=arm-linux –prefix=$PREFIX –without-x –disable-xlib –disable-xlib-xrender –enable-directfb –enable-freetype –disable-win32 –enable-pdf –enable-ps –disable-svg –enable-png

make

make install

15、pango-1.20.2

修改configure文件,將下面一些參數改成true

have_cairo=true

have_cairo_png=true

have_cairo_ps=true

have_cairo_pdf=true

have_cairo_freetype=true

CC=arm-linux-gcc ./configure –host=arm-linux –prefix=$PREFIX –enable-cairo –without-x

make

make install

16、gtk+-2.12.9

export LDFLAGS=”-L$PREFIX/lib -Wl,-rpath,$PREFIX/lib”

export CPPFLAGS=”-I$PREFIX/include”

CC=arm-linux-gcc ./configure –host=arm-linux –prefix=$PREFIX –with-gdktarget=directfb –without-x –without-libtiff

make

make install

在./configure時可能會出現錯誤,這是由于./configure的選項的原因,所以只要跟改下,以下僅是2中參考方案:

1、CC=arm-linux-gcc ./configure –host=arm-linux –build=i386-linux –prefix=$PREFIX –with-gdktarget=directfb –without-libtiff –disable-glibtest –disable-largefile –without-libpng

2、CC=arm-linux-gcc ./configure –host=arm-linux –build=i386-linux –prefix=$PREFIX –with-gdktarget=directfb –without-libtiff

在開發板上運行:

1、拷貝編譯后的文件(即/gtkdfb)到開發板上

以上操作有個很重要的地方,那就是Directfb的目標位置,這個將直接影響到使用,呵呵

由于我的目標位置在 /usr/gtkdfb, 因此我要將文件掛載在相同的位置,這是因為Directfb使用時默認查找的就是目標位置,如果目標位置沒有相關文件,就會報以下的錯誤:

(!) DirectFB/core/system: No system found!

(#) DirectFBError [gdk_display_open: DirectFBCreate]: No (suitable) implementation found!

2、編寫腳本

在運行之前,還要做幾個腳本(保存成tslib.sh和gtkdbf.sh),腳本1用于開發板上的tslib指定環境,腳本2用于pc環境編譯程序和開發板的gtk環境。腳本1和腳本2要根據自己的情況修改,以下可能只適合我。腳本1的修改請參見:http://hi.baidu.com/wstone%5Fh/blog/item/3e45ee247496a22cd407428e.html

腳本1:

#!/bin/bash

export TSLIB_ROOT=/usr/gtkdfb

export TSLIB_TSDEVICE=/dev/h3600_tsraw

export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal

export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export LD_LIBRARY_PATH=$TSLIB_ROOT/lib

腳本2:

#!/bin/bash

export PREFIX=/usr/gtkdfb

export CFLAGS=”-g -I$PREFIX/include”

export LDFLAGS=-L$PREFIX/lib

export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig

export LIBXML2_CFLAGS=-I$PREFIX/include/libxml2

export LIBXML2_LIBS=”-L$PREFIX/lib -lxml2”

export LDFLAGS=”-L$PREFIX/lib -lts -Wl,-rpath,$PREFIX/lib”

export CPPFLAGS=”-I$PREFIX/include”

現在在開發板上運行腳本1后,就可以運行/gtkdfb/bin/目錄下的ts_calibrate進行tslib的校正

3、構造2個文件:

這2個文件的位置在:

/usr/gtkdfb/etc/pango/pango.modules

/usr/gtkdfb/etc/gtk-2.0/gdk-pixbuf.loaders

使用以下方法構造,不然運行是會提示錯誤:

pango-querymodules > $PREFIX/etc/pango/pango.modules

gdk-pixbuf-query-loaders > /usr/gtkdfb/etc/gtk-2.0/gdk-pixbuf.loaders

4、編寫directfbrc

簡易的directfbrc文件如下:

system=fbdev

fbdev=/dev/fb0

mode=240x320

depth=16

pixelformat=RGB16

保存成 .directfbrc(是隱藏文件,注意有個“點“) ,并保存到$HOME目錄下(直接cd,切換到的目錄即是$HOME目錄)

這里可以根據運行后的警告和提示,或者自身對開發板的了解情況進行修改。

具體的可以參考:、解決字體問題

當沒有正確顯示字體,顯示是方框,這里是由于編譯時使用的是PC系統的字體庫,當我移植時卻沒有了字體庫,也就是那種后綴是ttf的文件,所以要拷個字體庫到開發板上。查看/gtkdfb/etc/fonts下的fonts.conf,使字庫和文件中描述的位置對應上。可以看到如下內容:

/usr/share/fonts就是我們的字體庫位置(pc的字庫也在/usr/share/fonts路徑下),從PC上拷字體庫到開發板的該目錄下(/usr/share/fonts)

6、運行gtk示例程序

在運行腳本1和腳本2后,運行/gtkdfb/bin/目錄下的gtk-demo,即gtk的示例程序。

在pc上編譯程序:

在pc上運行腳本2以后:

arm-linux-gcc -o hello hello.c -lts -Wl,-rpath,$PREFIX/lib pkg-config gtk+-2.0 --cflags --libs

編譯后tslib已經自動包含在其中,呵呵。拷到開發板即可運行自己的hello了。

總結

以上是生活随笔為你收集整理的arm-linux-gcc编译gtk程序,【又7】Arm 版GTK编译的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。