1、环境准备
2、ndk下载及配置环境变量
2.1、命令窗口执行:wget https://googledownloads.cn/android/repository/android-ndk-r29-linux.zip,下载压缩包
2.2、下载成功后,执行命令:unzip android-ndk-r29-linux.zip,解压缩
2.3执行vim ~/.bashrc,敲击i编辑:
export NDK=/home/andea/ndk/android-ndk-r29 #指定NDK路径
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64 #指定工具链
export PATH=$TOOLCHAIN/bin:$PATH #添加到环境变量,系统能够在任何位置直接调用该目录下的程序
export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang #指定编译器
export AR=$TOOLCHAIN/bin/llvm-ar #指定打包工具
2.4、esc退出,敲击:wq保存,执行source ~/.bashrc使生效
3、git clone https://github.com/stephane/libmodbus.git 下载libmodbus源码
4、cd libmodbus,然后执行./autogen.sh,生成.configure文件
5、生成so。
5.1、方法一、手动生成,仅生成单一环境的动态库。执行命令 ./configure --host=aarch64-linux-android --prefix=$(pwd)/install && make install。
5.2、方法二、采用脚本形式(由deepseek创建),执行touch build_libmodbus.sh。
5.3、vim build_libmodbus.sh,编辑build_libmodbus.sh。ESC退出,执行":wq"保存退出。
#!/bin/bash
# ===== 只需修改这里的 NDK 路径 =====
NDK=~/ndk/android-ndk-r29
# ==================================
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
# 要编译的架构列表
builds=(
"arm64-v8a:aarch64-linux-android:aarch64-linux-android21-clang"
"armeabi-v7a:armv7a-linux-androideabi:armv7a-linux-androideabi21-clang"
"x86_64:x86_64-linux-android:x86_64-linux-android21-clang"
"x86:i686-linux-android:i686-linux-android21-clang"
)
for build in "${builds[@]}"; do
IFS=':' read -r abi host compiler <<< "$build"
echo ">>> 正在编译 $abi ..."
make clean 2>/dev/null # 忽略 clean 可能的错误
# 直接通过 CC 变量指定编译器,无需 export
CC=$TOOLCHAIN/bin/$compiler \
AR=$TOOLCHAIN/bin/llvm-ar \
./configure --host=$host --prefix=$(pwd)/install_$abi
make && make install
echo ">>> $abi 编译完成!"
echo "---"
done
echo "🎉 所有架构编译完成!"
5.4、chmod +x build_libmodbus.sh授予可执行权限。
5.5、执行脚本./build_libmodbus.sh
6、完成编译。相关文件夹下输出对应的so
