ARM Linux下编译freetype、sdl、sdl

您所在的位置:网站首页 sdl源码 ARM Linux下编译freetype、sdl、sdl

ARM Linux下编译freetype、sdl、sdl

2023-08-31 09:28| 来源: 网络整理| 查看: 265

当前使用环境 开发平台:ubuntu18.04.1 x86_64海思硬件:GK7605交叉编译工具链:arm-gcc6.3-linux-uclibceabi-(其他平台及工具链类似) 1.下载库及依赖库源码

freetype:点击直接下载2.6.1版本 或 点击跳转下载目录

SDL2:点击直接下载2.0.12版本 或 点击跳转下载目录

SDL2_ttf:点击直接下载2.0.15版本 或 点击跳转下载目录

zlib:点击直接下载1.2.11版本 或 点击跳转下载目录

2.编译库文件

拷贝下载后的源码文件至linux编译目录下,此处我定义了一个专门的如下:

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ pwd /home/xn/00.research/GK7605V100/thirdparty/libfreetype_sdl (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ ll 总用量 12820 drwxrwxr-x 2 xn xn 4096 3月 2 10:47 ./ drwxrwxr-x 4 xn xn 4096 3月 2 10:47 ../ -rwxr----- 1 xn xn 2302080 9月 4 2020 freetype-2.6.1.tar.gz* -rwxr----- 1 xn xn 5720162 9月 4 2020 SDL2-2.0.12.tar.gz* -rwxr----- 1 xn xn 4479718 9月 4 2020 SDL2_ttf-2.0.15.tar.gz* -rwxr----- 1 xn xn 607698 9月 4 2020 zlib-1.2.11.tar.gz* (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$

在当前目录创建一个install目录,用于存放编译安装的库

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ mkdir install (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ ls freetype-2.6.1.tar.gz install SDL2-2.0.12.tar.gz SDL2_ttf-2.0.15.tar.gz zlib-1.2.11.tar.gz

2.1 zlib编译 解压并进入目录 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ tar zxvf zlib-1.2.11.tar.gz (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ cd zlib-1.2.11/ 配置并生成Makefile (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ export CC=arm-gcc6.3-linux-uclibceabi-gcc (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ ./configure --prefix=$PWD/../install --static Compiler error reporting is too harsh for ./configure (perhaps remove -Werror). ** ./configure aborting. (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$

    此处报错,需修改configure,使用vi configure打开,删除或注释如下部分,保存退出

 然后重新执行生成命令,发现已经执行成功:

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ export CC=arm-gcc6.3-linux-uclibceabi-gcc (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ ./configure --prefix=$PWD/../install --static Building static library libz.a version 1.2.11 with arm-gcc6.3-linux-uclibceabi-gcc. Checking for size_t... Yes. Checking for off64_t... Yes. Checking for fseeko... Yes. Checking for strerror... Yes. Checking for unistd.h... Yes. Checking for stdarg.h... Yes. Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf(). Checking for vsnprintf() in stdio.h... Yes. Checking for return value of vsnprintf()... Yes. Checking for attribute(visibility) support... Yes. (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ ls adler32.c configure deflate.c gzclose.c INDEX inflate.c Makefile.in os400 trees.c zconf.h zlib.3.pdf zlib.pc.in amiga configure.log deflate.h gzguts.h infback.c inflate.h make_vms.com qnx trees.h zconf.h.cmakein zlib.h zutil.c ChangeLog contrib doc gzlib.c inffast.c inftrees.c msdos README uncompr.c zconf.h.in zlib.map zutil.h CMakeLists.txt crc32.c examples gzread.c inffast.h inftrees.h nintendods test watcom zlib2ansi zlib.pc compress.c crc32.h FAQ gzwrite.c inffixed.h Makefile old treebuild.xml win32 zlib.3 zlib.pc.cmakein (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ 编译并安装 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ make 《中间打印省略。。。》 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ make install 《中间打印省略。。。》 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ ls ../install/lib/ libz.a pkgconfig (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$

 2.2 freetype编译  解压并进入目录 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ tar zxvf freetype-2.6.1.tar.gz 《中间打印省略。。。》 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ cd freetype-2.6.1/ (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$ 配置并生成Makefile (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$ ./configure CC=arm-gcc6.3-linux-uclibceabi-gcc --host=arm-gcc6.3-linux-uclibceabi --prefix=$PWD/../install LDFLAGS=-L$PWD/../install/lib CFLAGS=-I$PWD/../install/include --enable-shared=no --enable-static=yes 《中间打印省略。。。》 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$ ls autogen.sh ChangeLog ChangeLog.21 ChangeLog.23 CMakeLists.txt configure docs Jamfile Makefile objs README.git version.sed builds ChangeLog.20 ChangeLog.22 ChangeLog.24 config.mk devel include Jamrules modules.cfg README src vms_make.com (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$    编译并安装 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$ make 《中间打印省略。。。》 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$ make install 《中间打印省略。。。》 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$ ls ../install/lib/ libfreetype.a libfreetype.la libz.a pkgconfig (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$

 2.3 SDL2编译   解压并进入目录 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ tar zxvf SDL2-2.0.12.tar.gz 《中间打印省略。。。》 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ cd SDL2-2.0.12/ (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$ 配置并生成Makefile (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$ ./configure CC=arm-gcc6.3-linux-uclibceabi-gcc --host=arm-gcc6.3-linux-uclibceabi --prefix=$PWD/../install LDFLAGS=-L$PWD/../install/lib CFLAGS=-I$PWD/../install/include --enable-shared=no --enable-static=yes 《中间打印省略。。。》 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$ ls acinclude CMakeLists.txt CREDITS.txt Makefile.in README-SDL.txt sdl2-config-version.cmake src WhatsNew.txt Android.mk cmake_uninstall.cmake.in debian Makefile.minimal README.txt sdl2-config-version.cmake.in test Xcode android-project config.log docs Makefile.os2 sdl2-config sdl2.m4 TODO.txt Xcode-iOS autogen.sh config.status include Makefile.pandora sdl2-config.cmake sdl2.pc VisualC BUGS.txt configure INSTALL.txt Makefile.psp SDL2Config.cmake sdl2.pc.in VisualC.html build-scripts configure.ac libtool Makefile.rules sdl2-config.cmake.in SDL2.spec VisualC-WinRT cmake COPYING.txt Makefile Makefile.wiz sdl2-config.in SDL2.spec.in wayland-protocols (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$    编译并安装 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$ make 《中间打印省略。。。》 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$ make install 《中间打印省略。。。》 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$ ls ../install/lib/ cmake libfreetype.a libfreetype.la libSDL2.a libSDL2.la libSDL2main.a libSDL2main.la libSDL2_test.a libSDL2_test.la libz.a pkgconfig (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$

2.4 SDL2_ttf编译

解压并进入目录

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ tar zxvf SDL2_ttf-2.0.15.tar.gz 《中间打印省略。。。》 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ cd SDL2_ttf-2.0.15/ (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$ 配置并生成Makefile (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$ ./configure CC=arm-gcc6.3-linux-uclibceabi-gcc --host=arm-gcc6.3-linux-uclibceabi --prefix=$PWD/../install --with-ft-prefix=$PWD/../install --with-sdl-prefix=$PWD/../install --enable-shared=no --enable-static=yes 《中间打印省略。。。》 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$ ls acinclude CHANGES.txt config.log configure.in external libtool Makefile.in SDL2_ttf.pc.in SDL_ttf.h VisualC-WinRT aclocal.m4 CMakeLists.txt config.status COPYING.txt gcc-fat.sh ltmain.sh missing SDL2_ttf.spec showfont.c Xcode Android.mk compile config.sub debian glfont.c Makefile README.txt SDL2_ttf.spec.in version.rc Xcode-iOS autogen.sh config.guess configure depcomp install-sh Makefile.am SDL2_ttf.pc SDL_ttf.c VisualC (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$    编译并安装 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$ make 《中间打印省略。。。》 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$ make install 《中间打印省略。。。》 (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$ ls ../install/lib/ cmake libfreetype.la libSDL2.la libSDL2main.la libSDL2_test.la libSDL2_ttf.la pkgconfig libfreetype.a libSDL2.a libSDL2main.a libSDL2_test.a libSDL2_ttf.a libz.a (base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$

错误1:若出现如下错误:

arm-linux-uclibceabi/bin/ld: cannot find -lpng16 arm-linux-uclibceabi/bin/ld: cannot find -lharfbuzz

解决1:需要交叉编译libpng和libharfbuzz,或者在编译freetype时configure增加配置选项“--with-png=no --with-harfbuzz=no”



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3