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了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要Ubuntu中编译arm-linux-gnueabihf-gcc,你需要搭建交叉编译环境。首先,你需要在PC端下载编译工具。然后,将交叉编译工具上传至Ubuntu中。你可以从官方网站下载arm-linux-gnueabihf-gcc。交叉编译器有两个本:arm-linux-gnueabi和arm-linux-gnueabihf。这两个本的区别在于目标平台的硬件浮点支持。选择合适的交叉编译器后,将下载的gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf.tar.xz文件拷贝到arm目录中。使用以下命令拷贝文件:sudo cp gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/ -f。完成这些步骤后,你就可以使用arm-linux-gnueabihf-gcc进行编译了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [arm-linux-gcc交叉编译环境搭建](https://blog.csdn.net/weixin_42892101/article/details/90370688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [【Linux-ARM】安装 arm-linux-gnueabihf 交叉编译openssl-arm静态库与动态库](https://blog.csdn.net/hanhui22/article/details/125237010)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值