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
相关推荐
fengci.9 小时前
Microweber CMS 未授权路径穿越漏洞(CVE-2026-65694)
android·开发语言·前端·学习·php
stevenzqzq10 小时前
Android 矢量图(Vector Drawable)核心坐标与尺寸机制技术文档
android
plainGeekDev11 小时前
运行时获取依赖 → 编译时注入
android·java·kotlin
Wiktok11 小时前
Vue3(Vite)打包安卓APP 完整最佳实践
android·vue
略略略咯咯11 小时前
LocalDateTime
android
Co_Hui11 小时前
Android 系统服务的添加
android
蜡台12 小时前
Flutter Container 与装饰完整讲解
android·javascript·flutter·dart
杉氧13 小时前
用 Compose 挑战交互与动效天花板:ComposeCraftLab 开源实验室全解析
android·前端·kotlin
朝与同歌暮同酒13 小时前
冒泡社区《幻想三国》还能玩吗?安卓手机与电脑模拟器试玩记录
android·智能手机·电脑
音视频牛哥14 小时前
从数字孪生到机器人操控:Android Unity3D下RTMP/RTSP多路低延迟播放实践
android·unity·音视频·unity rtsp播放器·unity rtmp播放器·rtsp player·rtmp player