Android NDK 17(我也假设早期版本),包含多个版本的libgcc.a
:
android-ndk-r17b/toolchains/arm-linux-androideabi-4.9$ find -iname
libgcc.a
./prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/libgcc.a
./prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/armv7-a/libgcc.a
./prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/armv7-a/hard/libgcc.a
./prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/armv7-a/thumb/libgcc.a
./prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/armv7-a/thumb/hard/libgcc.a
./prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/thumb/libgcc.a
libatomic.a
也是如此
android-ndk-r17b/toolchains/arm-linux-androideabi-4.9$ find -iname libatomic.a
./prebuilt/linux-x86_64/arm-linux-androideabi/lib/libatomic.a
./prebuilt/linux-x86_64/arm-linux-androideabi/lib/armv7-a/libatomic.a
./prebuilt/linux-x86_64/arm-linux-androideabi/lib/armv7-a/hard/libatomic.a
./prebuilt/linux-x86_64/arm-linux-androideabi/lib/armv7-a/thumb/libatomic.a
./prebuilt/linux-x86_64/arm-linux-androideabi/lib/armv7-a/thumb/hard/libatomic.a
./prebuilt/linux-x86_64/arm-linux-androideabi/lib/thumb/libatomic.a
每个包含的目录都包含一整套crtbegin.o
,crtend.o
等...
$ ls ./prebuilt/linux-x86_64/arm-linux-androideabi/lib/armv7-a/
crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o libgcc.a libgcov.a
检查每个,它们的大小不同(我假设内容)。
.so
文件?thumb
指的是指令集(大多数ARM处理器具有不同的运行时可切换操作模式,为您提供不同的指令集)。非拇指可能意味着arm
。hard
是指确定如何将浮点参数传递给函数的ABI变量(现在已弃用AFAIK)。armv7-a
的库可能是现在已弃用的armeabi
(即ARMv5TE)。