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/NDK



cmake -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
相关推荐
一个人旅程~15 分钟前
MacBook Pro安装Win11 IoT LTSC 2024的两种方法操作说明
windows·经验分享·macos·电脑
_李小白10 小时前
【android opencv学习笔记】Day 28: 滤波算法之中值滤波器
android·opencv·学习
代龙涛12 小时前
WordPress page.php 页面模板与自定义模板使用方法
android·开发语言·php
爱莉希雅&&&13 小时前
zabbix快速搭建和使用
android·linux·数据库·zabbix·监控
zfoo-framework15 小时前
理解kotlin limitedParallelism(1)与Actor模型
android·开发语言·kotlin
2401_8657213317 小时前
御网杯初赛2026
android
cmdyu_17 小时前
mac上如何卸载node.js
macos·node.js
葱段17 小时前
【Compose】输入框(TextField)点击空白处失焦并关闭软键盘
android
黑化旺仔19 小时前
【OC】PHPickerViewController
macos·objective-c·cocoa
刮风那天19 小时前
Android Framework 核心架构图
android