arm交叉编译libpng

本文详细介绍了在ARM平台使用arm-himix200-linux-gcc编译器,从下载到配置,再到编译安装Zlib与LibPNG的全过程。包括环境变量设置、Makefile修改等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译器是arm-himix200-linux-gcc

编译libpng前,需要先编译zlib库。

zlib库下载地址http://www.zlib.net/

下载zlib-1.2.11.tar.gz,解压后,得到zlib-1.2.11

cd zlib-1.2.11

export CC=arm-himix200-linux-gcc   //它的configure不支持用CC变量来指定交叉工具链

./configure --prefix=/opt/hisi-linux/x86-arm/arm-himix200-linux/zlib

make;sudo make install

 

之后下载libpng源码,地址:https://sourceforge.net/projects/libpng/files/libpng16/1.6.36/

下载libpng-1.6.36.tar.gz,解压后,得到libpng-1.6.36

cd libpng-1.6.36

./configure CC=arm-himix200-linux-gcc --host=arm-himix200-linux CFLAGS=-I/opt/hisi-linux/x86-arm/arm-himix200-linux/zlib/include LDFLAGS=-L/opt/hisi-linux/x86-arm/arm-himix200-linux/zlib/lib --prefix=/opt/hisi-linux/x86-arm/arm-himix200-linux/libpng

此时还需要修改Makefile,把zlib的路径加进去

vi Makefile

在DEFAULT_INCLUDES = -I.下面再加一句DEFAULT_INCLUDES += -I/opt/hisi-linux/x86-arm/arm-himix200-linux/zlib/include

然后是make;sudo make install

之后到安装目录,就可以看到编译出来的libpng.a和png.h

 

### 设置和执行 libpng16 的交叉编译 #### 准备工作 为了在Ubuntu 18上成功完成libpng16的交叉编译,需要先准备必要的工具链以及依赖项。 确保已经安装了`g++-aarch64-linux-gnu`交叉编译器。可以通过命令行来验证是否已安装并确认其版本: ```bash aarch64-linux-gnu-g++ -v ``` 如果尚未安装,则需通过apt-get进行安装: ```bash sudo apt install g++-aarch64-linux-gnu ``` 此操作可以保证拥有适合目标架构(AArch64)的编译环境[^5]。 #### 下载 LibPNG 源码 前往官方资源页面获取最新稳定版LibPNG压缩包,本案例选用的是libpng1.6.x系列的一个具体版本作为例子。假设当前目录为期望解压的位置,在终端输入如下指令下载指定版本的源代码文件,并将其解压缩至本地路径下[^4]: ```bash wget http://downloads.sourceforge.net/project/libpng/libpng16/older-releases/1.6.37/libpng-1.6.37.tar.gz tar zxvf libpng-1.6.37.tar.gz cd libpng-1.6.37/ ``` #### 配置交叉编译选项 创建一个新的构建目录用于存放编译产物,避免污染原始源代码树结构;接着切换到该新建的工作空间内继续后续配置过程。在此期间定义一系列变量以便告知configure脚本关于宿主机与目标机的信息差异,从而使得整个项目能够针对特定硬件平台正确地生成二进制文件。 ```bash mkdir build-aarch64 && cd $_ ../configure \ --host=aarch64-linux-gnu \ --prefix=/usr/local/aarch64-linux-gnu \ CC="aarch64-linux-gnu-gcc" CXX="aarch64-linux-gnu-g++" ``` 上述命令指定了目标体系结构(`--host`)、安装位置(`--prefix`)还有C/C++编译器的具体调用方式(CC/CXX),这些参数对于指导自动化构建流程至关重要[^1]。 #### 执行编译链接阶段 一旦完成了预处理部分之后就可以正式开始编译环节啦!利用make工具读取Makefile里的规则集进而驱动实际的汇编、编译直至最终产出静态库(.a)或共享对象(.so)形式的目标程序。考虑到性能因素可以选择多线程模式加速这一耗时的过程(-jN,N代表并发数): ```bash make -j$(nproc) ``` 最后一步就是把刚才制作好的成果部署到位咯~即运行install子命令将.so/.a等拷贝过去事先设定的目的地址处(/usr/local/aarch64-linux-gnu/),这样就大功告成啦! ```bash sudo make install ``` 至此,已完成了一次完整的跨平台移植任务——即将原本适用于X86架构下的开源图形组件适配到了ARM服务器端环境中去[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

itolddd9720

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

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

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

打赏作者

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

抵扣说明:

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

余额充值