【问题标题】:How can I link cpufeatures lib for a native android library?如何为原生 android 库链接 cpufeatures 库?
【发布时间】:2015-05-12 07:44:26
【问题描述】:

我正在尝试将 android 的 cpu_features 链接到本机库。
我直接使用 android 的 gcc 编译器作为交叉编译器。 (不是 ndk-build)。

我已包含标题 ($NDK_PATH/sources/android/cpufeatures/cpu-features.h),但我没有看到预构建的 libcpufeatures.a ndk 文件夹下的任意位置的文件。
我怎样才能建立那个图书馆?或者在哪里可以找到它以便我可以正确链接它?

【问题讨论】:

    标签: android c++ gcc android-ndk linker


    【解决方案1】:

    您可以只在项目中包含源文件cpu-features.c,或者使用 gcc 手动构建它:

    arm-linux-androideabi-gcc -c cpu-features.c -o cpu-features.o --sysroot=$SYSROOT
    arm-linux-androideabi-ar rcs libcpufeatures.a cpu-features.o
    

    它不需要任何特殊的编译器标志或额外的定义,但在链接到它时,您可能需要添加-ldl,因为它使用dlopen

    【讨论】:

    • 是的,但是我需要在每个使用该 API 的库中包含它,这与链接不同。我实际上必须在所有构建中包含该 .c 文件。
    • 然后只需将cpu-features.c 作为库中的源文件之一包含(或将cpu-features.o 添加到静态库中,如果这是您构建库的内容)。由于您没有具体说明您正在构建哪种类型的库,以及它正在使用哪种构建系统,因此很难准确地说出最方便的方法是什么。