【发布时间】:2018-10-31 14:18:26
【问题描述】:
我们有一些混乱的 makefile 系统,我们将对其进行修复。但与此同时,我需要添加一个解决方法,如果你可以要求编译器(或链接器)链接一个库,我会徘徊,但前提是它存在。我知道如何修复 makefile,但这需要一些时间,同时我想要快速破解...
所以我有点像:
gcc <...other options...> -L ./some/path -l somelibrary
当libsomelibrary.so 不存在时,会出现错误。在这种情况下,我希望它在不链接的情况下继续。那可能吗? - 一些链接器选项?
【问题讨论】:
-
确定哪些库可用以及是否链接它们不是构建系统的工作吗?不确定它在 Makefiles 中是如何完成的,但在 CMake 中相当简单,所以我相信它也可以在那里完成。
-
通常,当库链接到应用程序时,这样做是有原因的。如果代码未使用它(因此不链接库将使代码编译) - 它可以完全删除。如果它被代码使用,并且你删除了这样的链接器指令:你会得到未解决的外部符号错误,使其由于其他原因无法编译。
-
@DanM。是的,你是对的。但正如我所说 - 我可以修复 makefile,但它需要在许多领域进行大量工作......我只是在问这个问题(作为快速破解)是否可以通过 gcc 完成 :)
-
@code_fodder 你无论如何都要改变 gcc 调用。因此,您可以将
somelibrary替换为$SOMELIBvar,并且仅在检查此类库是否存在成功时才设置它。 -
@DanM。啊,对不起 - 我明白你的意思,是的,这可以工作:)
标签: c++ gcc g++ shared-libraries