当前位置: 首页 > news >正文

Macos下交叉编译安卓的paq8px压缩算法

  官方没有android的编译方法,自己编写脚本在macos下交叉编译.

下载源码: git clone https://github.com/hxim/paq8px.git 

稍旧的ndk并不能编译成功,需要下载最新的ndkr27c, 最后是使用clang来编译。

编译build.sh
export ANDROID_NDK=/Volumes/data/Codes/AndroidNDK12479018.app/Contents/NDKcmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \-DANDROID_ABI="arm64-v8a" \-DANDROID_NDK=$ANDROID_NDK \-DANDROID_PLATFORM=android-31 \..make

修改paq8px/CMakeLists.txt, 如下,去掉clang++不支持的-march=nocona和-floop-strip-mine

 
if (NATIVECPU)add_definitions(-march=native -mtune=native)
else ()
#    add_definitions(-march=nocona -mtune=generic)add_definitions(-mtune=generic)
endif (NATIVECPU)if (DISABLE_ZLIB)add_definitions(-DDISABLE_ZLIB)
endif (DISABLE_ZLIB)if (NDEBUG)add_definitions(-DNDEBUG)
endif (NDEBUG)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
#set(CMAKE_CXX_FLAGS "-O3 -floop-strip-mine -funroll-loops -ftree-vectorize -fgcse-sm -falign-loops=16")
set(CMAKE_CXX_FLAGS "-O3 -funroll-loops -ftree-vectorize -fgcse-sm -falign-loops=16")

运行编译,成功

mkdir mybuild
cd mybuild
chmod +x ../build.sh$ ../build.sh
-- The C compiler identification is Clang 18.0.3
-- The CXX compiler identification is Clang 18.0.3
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Volumes/data/Codes/AndroidNDK12479018.app/Contents/NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Volumes/data/Codes/AndroidNDK12479018.app/Contents/NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found ZLIB: /Volumes/data/Codes/AndroidNDK12479018.app/Contents/NDK/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/31/libz.so (found version "1.3.0.1")
-- IPO / LTO enabled
-- Configuring done (3.1s)
-- Generating done (0.0s)
-- Build files have been written to: /Volumes/evo2T/src/paq8px/androidbuid
[  1%] Building CXX object CMakeFiles/paq8px.dir/ProgramChecker.cpp.o
....
2 warnings generated.
[ 97%] Building CXX object CMakeFiles/paq8px.dir/StateMapPair.cpp.o
clang++: warning: optimization flag '-fgcse-sm' is not supported [-Wignored-optimization-argument]
[ 98%] Building CXX object CMakeFiles/paq8px.dir/SimdMixer.cpp.o
clang++: warning: optimization flag '-fgcse-sm' is not supported [-Wignored-optimization-argument]
[100%] Linking CXX executable paq8px

http://www.lryc.cn/news/525839.html

相关文章:

  • 如何在data.table中处理缺失值
  • 从零安装 LLaMA-Factory 微调 Qwen 大模型成功及所有的坑
  • SQL-leetcode—1164. 指定日期的产品价格
  • [Day 15]54.螺旋矩阵(简单易懂 有画图)
  • HTTP 配置与应用(不同网段)
  • Quartus:开发使用及 Tips 总结
  • VSCode下EIDE插件开发STM32
  • Golang并发机制及CSP并发模型
  • HTML 文本格式化详解
  • 我谈《概率论与数理统计》的知识体系
  • 五、华为 RSTP
  • 基于Java Web的网上房屋租售网站
  • Pyside6(PyQT5)中的QTableView与QSqlQueryModel、QSqlTableModel的联合使用
  • git常用命令学习
  • 【优选算法】7----三数之和
  • 分子动力学模拟里的术语:leap-frog蛙跳算法和‌Velocity-Verlet算法
  • 2025年数学建模美赛:A题分析(1)Testing Time: The Constant Wear On Stairs
  • 利用 SoybeanAdmin 实现前后端分离的企业级管理系统
  • 996引擎 - 前期准备-配置开发环境
  • Tensor 基本操作4 理解 indexing,加减乘除和 broadcasting 运算 | PyTorch 深度学习实战
  • 【Uniapp-Vue3】request各种不同类型的参数详解
  • 【Prometheus】Prometheus如何监控Haproxy
  • SSM开发(一)JAVA,javaEE,spring,springmvc,springboot,SSM,SSH等几个概念区别
  • HTML5 常用事件详解
  • TCP全连接队列
  • 统计文本文件中单词频率的 Swift 与 Bash 实现详解
  • iOS 权限管理:同时请求相机和麦克风权限的最佳实践
  • Excel 实现文本拼接方法
  • 软考信安27~Windows操作系统安全相关
  • 从 Spark 到 StarRocks:实现58同城湖仓一体架构的高效转型