Android:将静态库合并为单个库

3

我使用 Android NDK r8 通过 include $(BUILD_STATIC_LIBRARY) 生成多个静态库,成功得到:lib1.a、lib2.a、lib3.a 等。

现在我想将这些静态库合并成一个。

我尝试使用 Android NDK 中的 ar.exe 进行合并:

android-ndk-r8\toolchains\arm-linux-androideabi-4.4.3\prebuilt\windows\arm-linux-androideabi\bin\ar.exe r libALL.a lib1.a lib2.a lib3.a

但是当我在Android NDK makefile中使用libAll.a时,它会失败并显示没有索引。
如何添加这个索引?
其他问题:
当我显示存档libAll.a的内容时,我看到的是lib1.a,lib2.a和lib3.a,而不是这些库中的.o符号。
如何更改这个(从静态库中提取.o以将其合并到libAll.a中)?
谢谢。
1个回答

1

ar只是一个类似于zip的归档工具。它接受给定的输入文件并生成一个.a的归档文件。如果您想将所有.o文件包含在一个单独的归档文件中,您必须指定每个单独的文件。我不知道如何在Windows上做到这一点,但在Linux上,您可以使用类似于ar rs $(find . -name *.o)的东西。


好的,谢谢你的回答。你知道我应该使用哪个工具将 .a 合并成一个吗? - TheFrancisOne
1
你可以尝试使用 ar x 提取所有目标文件,然后再使用 ar rs 重新打包。但是,我不知道这是否会破坏一些路径。另外请参考 https://dev59.com/fm865IYBdhLWcg3wa980。 - Dan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接