0

我正在为 android 构建一个动态库 (.so) 文件,其中包含大约 100 个本地 c 文件。这些文件都包含一个文件c_macros.h,但c_macros.h不同文件组的问题会发生变化。例如,foo0.candbar0.c需要包含c_macros.h在目录中0/,而foo1.candbar1.c需要包含c_macros.h在目录中1/

我看到可以LOCAL_C_INCLUDES为整个编译定义,以便所有 .o 文件都将使用这些本地包含。但是,可以LOCAL_C_INCLUDES为单个文件(或一组文件)指定然后更改以便可以为正确的文件包含正确的目录吗?

一种解决方案是根据c_macros.h正在使用的文件构建不同的 .so 文件,但这会为每个 .so 文件增加大约 10KB 的开销,所以如果可能的话,我想将所有内容压缩到一个大的 .so 文件中,但随后我需要解决这个LOCAL_C_INCLUDES问题。

4

1 回答 1

0

您可以将其构建到单独的静态库中(您可以轻松地LOCAL_C_INCLUDES为每个静态库设置不同的库),并且只需构建一个包含静态库的 .so 文件。在链接最终的 .so 文件时,这不会产生任何额外的开销(来自静态库的目标文件的行为与普通的单个目标文件一样)。

于 2015-03-03T10:57:14.577 回答