Android NDK指南解释了Adnroid.mk
中的两个变量,如下所示:
LOCAL_LDLIBS - 构建共享库或可执行文件时要使用的其他链接器标志的列表 ...
LOCAL_LDFLAGS - 构建共享库或可执行文件时要使用的其他链接器标志的列表 ...
那么这两者之间有什么区别?
答案 0 :(得分:8)
主要区别如下:
LOCAL_LDFLAGS在最终链接器命令行上的目标文件和库列表之前出现,这是您要放置实际"标志"这会影响链接器的行为。
LOCAL_LDLIBS在最终链接命令行上的目标文件和库列表后出现,这是您希望放置实际系统库依赖关系的位置。
由于静态链接在Unix上的工作方式存在差异,即目标文件,静态库和共享库的顺序对于确定最终结果非常重要,有时您确实要确保在之前/之后出现某些内容。其他
最后,我建议遵循文档,即:
将真正的链接器标志放入LOCAL_LDFLAGS
将系统库依赖项放入LOCAL_LDLIBS
仅将LOCAL_LDLIBS用于系统库依赖项。如果你想指向另一个库,最好将它们列在LOCAL_STATIC_LIBRARIES和LOCAL_SHARED_LIBRARIES中(即使这意味着为它们定义一个PREBUILT_XXX模块),因为这可以让构建系统解决依赖关系并自动排序你。
答案 1 :(得分:5)
目前可能没有功能差异(或者这是文档中的一个小错误)但是意图(根据这种类型的命名变量的长期传统)是:
LOCAL_LDLIBS会指定库或至少要链接到结果中的对象
LOCAL_LDFLAGS将指定链接器的其他配置选项