需要编译的库
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安装的头文件路径