Directfb Cross Compile
4 Feb 2024
Read time: 2 minute(s)
Directfb 的编译要依赖于 libz,libpng,freetype 等,pkgconfig 虽然不是强依赖,但其提供的强大的包管理能力,
会让后续的编译容易很多,因此强烈建议编译。
- 设置环境变量Directfb 及其相关的依赖的编译采用 Makefile 的方式,因此环境变量的设置采用通用做法
export PRFIX=/xxx/QT/install export CROSS_COMPILE=riscv64-unknown-linux-gnu export PATH=/xxx/toolchain/d211/bin/:$PATH export PKG_CONFIG_PATH="${PRFIX}/lib/pkgconfig" export ARCH=riscv export AS=riscv64-unknown-linux-gnu-as export LD=riscv64-unknown-linux-gnu-ld export CC=riscv64-unknown-linux-gnu-gcc export GCC=riscv64-unknown-linux-gnu-gcc export CPP=riscv64-unknown-linux-gnu-cpp export CXX=riscv64-unknown-linux-gnu-g++ export RANLIB=riscv64-unknown-linux-gnu-ranlib export NM=riscv64-unknown-linux-gnu-nm export STRIP=riscv64-unknown-linux-gnu-strip export OBJCOPY=riscv64-unknown-linux-gnu-objcopy export OBJDUMP=riscv64-unknown-linux-gnu-objdump export CPPFLAGS="-I${PRFIX}/include" export CFLAGS="-I${PRFIX}/include" export LDFLAGS="-L${PRFIX}/lib" export LIBPNG_LIBS=-lpng16
- 编译 pkg
config
./configure --host=riscv64-unknown-linux-gnu --prefix=$PRFIX make make install
- 编译 zlib
cd zlib-1.2.11 ./configure --prefix=$PRFIX make make install
- 编译 libpng
本次使用的 libpng 版本是 1.6,而 directfb 自己的代码的比较老,因此需要通过上面的 LIBPNG_LIBS=-lpng16 指定一下 png 的版本
cd libpng-1.6.37 ./configure --target=riscv64-unknown-linux-gnu --host=riscv64-unknown-linux-gnu --prefix=$PRFIX make make install
- 编译 freetype
freetype 是一个字体库引擎,需要 libz 进行自体库的解码,需要 libpng 进行自体的渲染,但默认支持的是 png1.2 版本,因此需要 LIBPNG_LIBS=-lpng16 指定使用 1.6 版本
cd freetype-2.10.4 export LIBPNG_LIBS=-lpng16 ./configure --target=riscv64-unknown-linux-gnu --host=riscv64-linux-gnu --prefix=$PRFIX make make install
- 编译 directcb
cd DirectFB-1.7.7 export LIBS=-lz ./configure --host=riscv64-unknown-linux-gnu --prefix=$PRFIX --disable-gtk-doc \ --disable-gtk-doc-html --disable-docs --disable-documentation \ --with-xmlto=no --with-fop=no --disable-dependency-tracking --enable-ipv6 \ --disable-nls --enable-static --enable-shared --enable-zlib --enable-freetype \ --enable-fbdev --disable-sdl --disable-vnc --disable-osx --disable-video4linux \ --disable-video4linux2 --without-tools --disable-x11 --disable-multi \ --disable-multi-kernel --enable-debug-support --disable-divine --disable-sawman \ --with-gfxdrivers=none --with-inputdrivers=none --disable-gif --disable-tiff \ --disable-png --disable-jpeg --disable-svg --disable-imlib2 --with-dither-rgb16=none