交叉编译minigui并移植到目标板

需要编译的库

libminigui.3.2.2.tar.gz
zlib-1.2.2.tar.gz
jpegsrc.v7.tar.gz
libpng-1.2.37.tar 下载
freetype-2.6.1.tar.gz(可选的,用于对TTF字体文件的支持)

以上库均可从minigui官网下载:点击跳转下载页面
编译安装顺序是:
zlib --> libpng,libjpeg --> libfreetype --> libminigui

需要注意的是,libminigui 是minigui的核心库,可以生成libminigui.so动态库供gui应用程序链接。而libjpeg,libpng,libfreetype都是可选的库,如果你的应用程序不需要支持jpg,png图片,TTF字体的支持,这些都是不需要编译的库,在编译libminigui时可以把对应的选项disable,示例:

./configure \
--enable-pngsupport=no \
--enable-jpgsupport=no \
--with-ttfsupport=none

交叉编译工具链

找到你的交叉编译工具链的安装位置,一般你的工具链里bin目录下有gcc等工具,include目录有交叉编译所需的头文件, 在执行 ./configure 时将这些环境变量通过宏参数传递给它。
本文以mips平台为例,
编译器名称为:mips-linux-gnu-gcc

编译步骤

1.编译zlib

解压zlib-1.2.2.tar.gz并进入目录,执行以下命令:

CC=mips-linux-gnu-gcc \
CXX=mips-linux-gnu-g++ \
LD=mips-linux-gnu-ld \
AS=mips-linux-gnu-as \
AR=mips-linux-gnu-ar \
./configure --prefix=/usr/local/ \
--shared --libdir=/usr/local/lib/ \
--includedir=/usr/local/include

make && make install

2.编译libjpeg

解压jpegsrc.v7.tar.gz并进入目录,执行以下命令:

CC=mips-linux-gnu-gcc \
CXX=mips-linux-gnu-g++ \
LD=mips-linux-gnu-ld \
AS=mips-linux-gnu-as \
AR=mips-linux-gnu-ar \
LDFLAGS="-L/usr/local/lib" \
CPPFLAGS="-I/usr/local/include" \
./configure --prefix=/usr/local/ \
--build=x86_64-pc-linux-gnu \
--host=mips-linux-gnu \
--enable-shared

make && make install

其中, host:编译出来的二进制程序所执行的主机,build:执行代码编译的主机。关于build和host,target的说明,有一篇文章写的很好:./configure -build,-host,-target设置

3.编译libpng

解压libpng-1.2.37.tar并进入目录,可能需要先执行:./autogen.sh
然后执行以下命令:

CC=mips-linux-gnu-gcc \
CXX=mips-linux-gnu-g++ \
LD=mips-linux-gnu-ld \
AS=mips-linux-gnu-as \
AR=mips-linux-gnu-ar \
LDFLAGS="-L/usr/local/lib " \
CPPFLAGS="-I/usr/local/include" \
./configure --prefix=/usr/local/ \
--build=x86_64-pc-linux-gnu \
--host=mips-linux-gnu \
--with-pkgconfigdir=/usr/local/lib/pkgconfig

make && make install

4. 编译libfreetype

解压freetype-2.6.1.tar.gz并进入目录,先执行 ./autogen.sh
因为freetype依赖libharfbuzz,所以需要先交叉编译一个libharfbuzz,博主尝试了下,发现libharfbuzz编不过,就放弃了。在configure时加上一个选项–without-harfbuzz,放弃libharfbuzz。如下:

CC=mips-linux-gnu-gcc \
CXX=mips-linux-gnu-g++ \
LD=mips-linux-gnu-ld \
LDFLAGS=-L/usr/local/lib \
CFLAGS=-I/usr/local/include \
AS=mips-linux-gnu-as \
AR=mips-linux-gnu-ar \
./configure --prefix=/usr/local/ \
--build=x86_64-pc-linux-gnu \
--host=mips-linux-gnu \
--without-harfbuzz

make && make install

5. 编译libminigui

博主目标板支持LCD屏显示,通过frambuffer读写fb0。所以需要使能videofbcon,同时关闭qvfb等虚拟屏。为了减小动态库的大小,本人关闭了一些没有使用的功能,经过裁剪后库能减小1MB的大小。
解压libminigui.3.2.2.tar.gz并进入目录,执行:

CC=mips-linux-gnu-gcc \
CXX=mips-linux-gnu-g++ \
LD=mips-linux-gnu-ld \
AS=mips-linux-gnu-as \
AR=mips-linux-gnu-ar \
LDFLAGS="-L/usr/local/lib" \
CPPFLAGS="-I/usr/local/include" \
./configure --prefix=/usr/local \
--host=mips-linux-gnu \
--with-runmode=ths \
--with-targetname=fbcon \
--enable-videopcxvfb=no \
--enable-videoqvfb=no \
--enable-cursor=no \
--enable-videostgfb=no \
--enable-vbfsupport=yes \
--enable-splash=no \
--with-ttfsupport=ft2 \     
--with-ft2-includes=/usr/local/include/freetype2/ \
--enable-menu=no \
--enable-ctrliconview=yes \
--with-osname=linux  \
--enable-clipboard=yes \
--enable-syncupdate=no \
--enable-flatlf=no \
--enable-skinlf=no \
--enable-dummyial=no \
--enable-consoleial=no \
--enable-consoleps2=no \
--enable-consolems=no \
--enable-consolems3=no \
--enable-rbfterminal=no \
--enable-rbfvgaoem=no \
--enable-vbfsupport=no \
--enable-fontcourier=no \
--enable-upfsupport=no \
--enable-fonttimes=no \
--enable-bmpfsupport=no \
--enable-thaisupport=no \
--enable-latin9support=no \
--enable-unicodesupport=no \
--enable-savebitmap=no \
--enable-gifsupport=no \
--enable-mousecalibrate=no \
--enable-savescreen=no \
--enable-ctrlpgbar=no \
--enable-ctrlcombobox=no \
--enable-ctrlpropsheet=no \
--enable-ctrlnewtoolbar=no \
--enable-ctrlmenubtn=no \
--enable-ctrlanimation=no \
--enable-videodummy=no

make && make install

–with-ttfsupport=ft2 :打开对TTF字体文件的支持,依赖Freetype2库。
–with-ft2-includes=/usr/local/include/freetype2/ 指定freetype安装的头文件路径

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长成的城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值