由于linux的ubuntu是x86_64架构,需要编译一个动态库so,在安卓android上使用,而android的架构一般是arm架构,因此需要跨架构交叉编译
1、安装arm编译工具
去这个地址下载个arm-linux-gcc-4.3.2(这是arm32)
http://www.arm9.net/download.asp或者http://code.google.com/p/princess-alist/downloads/detail?name=arm-linux-gcc-4.3.2.tgz&can=2&q
这个是arm64 aarch64(MSB大端模式)
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads
这个arm64 aarch64(LSB小端模式)(我是x86_64编译的so,运行在android11的手机上,可能很多人都会需要这个版本的)
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads
下载这个版本:
AArch64 GNU/Linux target (aarch64-none-linux-gnu)
gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz
2、解压
cd /usr/local
sudo mkdir arm_4.4.3
mv arm-linux-gcc-4.4.3.tgz /usr/local/arm_4.4.3
tar -xzf arm-linux-gcc-4.4.3.tgz
3、新增环境变量(可能不需要)
sudo gedit ~/.bashrc
#在底部添加如下代码:
export PATH=$PATH:/usr/local/arm_4.4.3/bin
4、clion配置arm交叉编译工具链
打开file - settings - build,excution,deployment - ToolChains
打开file - settings - build,excution,deployment - CMake
5、选择编译工具
6、接下来编译出来的动态库so,就是arm架构的
可以使用file指令查看文件的架构
speed@speedMaster:/home/testSo/cmake-build-debug-arm-linux$ file libTestSo.so
libTestSo.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, with debug_info, not stripped