Android 本地\u LDLIBS与本地\u LDFLAGS

Android 本地\u LDLIBS与本地\u LDFLAGS,android,android-ndk,Android,Android Ndk,Android NDK指南将Adnroid.mk中的两个变量解释如下: LOCAL_LDLIBS—构建共享库或可执行文件时要使用的其他链接器标志的列表。 LOCAL_LDFLAGS—构建共享库或可执行文件时要使用的其他链接器标志的列表。 那么这两者之间的区别是什么呢?目前可能没有功能上的区别(或者这是文档中的一个小错误),但其目的(根据这种类型变量命名的长期传统)是: LOCAL_LDLIBS将指定要链接到结果中的库或至少对象 本地标志将为链接器指定其他配置选项 主要区别如下: 本地标

Android NDK指南将Adnroid.mk中的两个变量解释如下:

LOCAL_LDLIBS—构建共享库或可执行文件时要使用的其他链接器标志的列表。


LOCAL_LDFLAGS—构建共享库或可执行文件时要使用的其他链接器标志的列表。


那么这两者之间的区别是什么呢?

目前可能没有功能上的区别(或者这是文档中的一个小错误),但其目的(根据这种类型变量命名的长期传统)是:

  • LOCAL_LDLIBS将指定要链接到结果中的库或至少对象

  • 本地标志将为链接器指定其他配置选项


主要区别如下:

  • 本地标志出现在最终链接器命令行上的对象文件和库列表之前,这是您希望放置影响链接器行为的实际“标志”的位置

  • LOCAL_ldlib出现在最终链接的命令行上的对象文件和库列表之后,这是您希望放置实际系统库依赖项的位置

这种区别的存在是因为静态链接在Unix上的工作方式,即对象文件、静态库和共享库的顺序对于确定最终结果非常重要,有时您确实需要确保某些内容出现在另一个之前/之后

最后,我建议遵循以下文档,即:

  • 将实际链接器标志放入本地\u LDFLAGS

  • 将系统库依赖项放入本地\u ldlib

  • 仅对系统库依赖项使用本地\u ldlib。如果您想指向另一个库,最好将它们列在本地\u静态\u库和本地\u共享\u库中(即使这意味着为它们定义一个预构建的\u XXX模块),因为这样可以让构建系统自动为您计算依赖项和排序

我需要在库列表中使用
--start group
/
--end group
选项。我最后把它们放在了
LOCAL\u LDFLAGS
中,这很有效,但根据您的输入,可能会将它们移动到
LOCAL\u LDLIBS