Linux下的#pragma comment(lib,“xxx.lib”)等效?

时间:2009-11-06 03:20:10

标签: gcc static-linking

我有一个名为libunp.a的静态库文件,我知道我可以使用gcc -lunp xx链接到库。

我可以使用#pragma comment(lib,"xxx.lib")告诉Microsoft C / C ++编译器包含库;我怎么能在Linux / GCC下做到这一点?

4 个答案:

答案 0 :(得分:20)

GCC manual's page on pragmas中似乎没有提及任何等效的编译指示。

我看到GCC不支持源代码链接的一个原因是有时,correct linking depends on link order;这将要求您确保无论编译顺序如何都能正确发生链接顺序。如果你要做那么多工作,你可以在命令行(或其他方面)传递链接器参数,我想。

答案 1 :(得分:19)

  

应在链接步骤中指定库。这样的信息简单   不属于翻译单位。翻译单元可以预处理,   即使没有连接阶段也可以编译和组装。

仅仅因为#pragma comment(lib,"xxx.lib")在源文件中并不意味着编译器会消耗它。实际上,它作为注释进行,随后由链接器使用。与* nix没什么不同。

答案 2 :(得分:0)

使用此GCC标志为未知的编译指示生成错误。它会迅速告诉您编译器是否理解。

-Werror=unknown-pragmas

答案 3 :(得分:-3)

简单;你不能。 GCC没有这样的等价物。指定-l作为gcc参数,创建链接描述文件,调用ld,调用911或其他任何内容。

并不是说这样的pragma甚至是有意义的。应在链接步骤中指定库。这些信息根本不属于翻译单元。即使没有链接阶段,也可以对翻译单元进行预处理,编译和组装。 Visual Studio使用的工具链允许这样做,因为它是脑and并且总是执行链接。

您可能希望为自己节省一些繁琐的输入并为项目创建MakeFile:GNU Make Manual