为libpng不同架构创建构建目录、编译、安装以及合并库文件的所有步骤。

本文主要是介绍为libpng不同架构创建构建目录、编译、安装以及合并库文件的所有步骤。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

好的。既然你已经有了 libpng 的源代码,并且当前处在它的目录下,我们可以简化脚本,不再需要下载和解压源代码这一步。以下是修改后的脚本:```sh
#!/bin/bash# 当前目录即 libpng 源代码目录
LIBPNG_SRC_DIR=$(pwd)# 设置工作目录
WORK_DIR=$(pwd)/libpng_build
BUILD_DIR_X86_64="$WORK_DIR/build_x86_64"
BUILD_DIR_ARM64="$WORK_DIR/build_arm64"
BUILD_DIR_UNIVERSAL="$WORK_DIR/build_universal"
INSTALL_DIR_X86_64="$BUILD_DIR_X86_64/install"
INSTALL_DIR_ARM64="$BUILD_DIR_ARM64/install"
UNIVERSAL_LIB_DIR="$BUILD_DIR_UNIVERSAL/lib"
UNIVERSAL_INCLUDE_DIR="$BUILD_DIR_UNIVERSAL/include"# 创建工作目录
mkdir -p $WORK_DIR# 创建构建目录
mkdir -p $BUILD_DIR_X86_64
mkdir -p $BUILD_DIR_ARM64
mkdir -p $BUILD_DIR_UNIVERSAL# 编译 x86_64 版本的 libpng
cd $BUILD_DIR_X86_64
cmake $LIBPNG_SRC_DIR -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR_X86_64 -DCMAKE_OSX_ARCHITECTURES=x86_64
make
make install# 编译 arm64 版本的 libpng
cd $BUILD_DIR_ARM64
cmake $LIBPNG_SRC_DIR -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR_ARM64 -DCMAKE_OSX_ARCHITECTURES=arm64
make
make install# 合并库文件到通用库目录
mkdir -p $UNIVERSAL_LIB_DIR
lipo -create -output $UNIVERSAL_LIB_DIR/libpng16.a $INSTALL_DIR_X86_64/lib/libpng16.a $INSTALL_DIR_ARM64/lib/libpng16.a# 合并头文件
mkdir -p $UNIVERSAL_INCLUDE_DIR
cp -R $INSTALL_DIR_X86_64/include/* $UNIVERSAL_INCLUDE_DIR/# 验证生成的通用库
echo "验证生成的通用库:"
lipo -info $UNIVERSAL_LIB_DIR/libpng16.aecho "通用库生成完毕,路径:$BUILD_DIR_UNIVERSAL"

使用脚本进行构建

  1. 将上述代码保存为 build_libpng_universal.sh
  2. 赋予脚本执行权限:
chmod +x build_libpng_universal.sh
  1. 确保你处在 libpng 源代码的目录下,然后执行脚本:
./build_libpng_universal.sh

执行完之后,脚本会在 libpng_build/build_universal 目录下生成包含通用库的 lib 和头文件的 include 目录。在项目中,可以像这样链接你的库和包含文件:

set(LIBPNG_DIR "/absolute_path_to_libpng_build/build_universal")
link_directories(${LIBPNG_DIR}/lib)
include_directories(${LIBPNG_DIR}/include)
target_link_libraries(your_target libpng16)

这个脚本将处理从构建到合并的所有步骤,确保 libpng 的 x86_64 和 arm64 架构版本被正确编译和合并。


这篇关于为libpng不同架构创建构建目录、编译、安装以及合并库文件的所有步骤。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147169

相关文章

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Goland debug失效详细解决步骤(合集)

《Golanddebug失效详细解决步骤(合集)》今天用Goland开发时,打断点,以debug方式运行,发现程序并没有断住,程序跳过了断点,直接运行结束,网上搜寻了大量文章,最后得以解决,特此在这... 目录Bug:Goland debug失效详细解决步骤【合集】情况一:Go或Goland架构不对情况二:

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Python创建Excel的4种方式小结

《Python创建Excel的4种方式小结》这篇文章主要为大家详细介绍了Python中创建Excel的4种常见方式,文中的示例代码简洁易懂,具有一定的参考价值,感兴趣的小伙伴可以学习一下... 目录库的安装代码1——pandas代码2——openpyxl代码3——xlsxwriterwww.cppcns.c