【问题标题】:Help on linking in gcc在 gcc 中链接的帮助
【发布时间】:2009-12-09 17:12:42
【问题描述】:

在 Microsoft Visual c++ 编译器中,您可以使用指定链接器选项

 #pragma comment(lib, "MSVCRT") //links with the MVCRT library  

see this page

我发现此功能非常有用,因为链接器错误很常见,我只想将所有链接器选项放在我的源代码中,而不是将它们指定给编译器。

问题:有没有办法在 gcc(或 dev-cppcodeblocks ide )?

提前致谢。

【问题讨论】:

  • 它们可以在你的源代码中,只要是名为Makefile的文件;)
  • 对不起,我在发布这个问题的时候有点分心了。我的道歉

标签: c++ c gcc linker


【解决方案1】:

【讨论】:

  • 您链接到的链接顺序文章说链接顺序很重要,基本上,仅适用于较旧的链接器,因为大多数现代链接器无论如何都会搜索所有链接库,而与顺序无关。因此,IMO 不支持这一点是一个相当可疑的理由。至少 Boost 人使用它,而且他们通常与糟糕的 C++ 编程无关:)
【解决方案2】:

简而言之,GCC 不支持在源代码中指定要链接的库。

如果您的 IDE 处理编译和链接过程,您可能可以在 IDE 中添加引用,并让它担心将正确的选项传递给每个单元的 gcc。

【讨论】:

    【解决方案3】:

    鉴于链接选项和库名称因系统而异,我很高兴将它们与我的源代码文件分开,从而使源代码系统保持独立。

    然后构建系统可以决定如何在什么系统上构建。我会说,总体上更清洁的方法。

    【讨论】:

    • 必须两次包含一个库(包含文件和库)有什么好处?我喜欢 Boost 方法。只需包含您要使用的库的包含文件即可。
    • 在某些系统上,您需要在链接时显式指定-lm 以获取数学函数,而在某些系统上您不需要(甚至不能)。那不是干净的,而是真实的。处理这样愚蠢的事情的最干净的方法是什么?绝对是在我的源代码文件之外。
    • 现实不一定是干净的,这是真的。然而,在我看来,Boost 方式仍然是最简单的方式,因为你基本上不会做错太多。这是一件好事。
    猜你喜欢
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 2011-11-10
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多