C++ gcc中的静态链接(mingw)

C++ gcc中的静态链接(mingw),c++,c,gcc,C++,C,Gcc,我正在尝试链接由22个静态库(.a)文件组成的外部库。当我使用VisualStudio时,我只需要将目录传递给VS,它将与目录中的文件链接。对于gcc,我首先想到的是 -LC:\...\directory_of_library -lsth1 -lsth2 -lsth3 ... -lsth22 ,我正试图找到一个比这更好的方法 此外,是否会有任何问题与'超链接'?因此,链接到更多的库是不必要的。或者编译器会巧妙地忽略冗余部分吗?1)您的命令只是“链接”。现在很好 2) “静态”链接意味着指定“-

我正在尝试链接由22个静态库(.a)文件组成的外部库。当我使用VisualStudio时,我只需要将目录传递给VS,它将与目录中的文件链接。对于gcc,我首先想到的是

-LC:\...\directory_of_library -lsth1 -lsth2 -lsth3 ... -lsth22

,我正试图找到一个比这更好的方法

此外,是否会有任何问题与'超链接'?因此,链接到更多的库是不必要的。或者编译器会巧妙地忽略冗余部分吗?

1)您的命令只是“链接”。现在很好

2) “静态”链接意味着指定“-Bstatic”,或指定一个静态的“.a”库

这里有几个很好的链接可以解释“静态”链接和“动态”链接:


当链接器扫描库文件时,它只链接解析早期目标代码或库未解析的符号所需的目标代码。不会链接存档中未引用的目标代码


指定冗余库可能会延长生成时间。您可以通过首先指定使用最多的库来帮助实现这一点,但在除了最大的项目之外的所有项目中,这都不太可能有意义。

“试图找到一种比”--更好的方法--因为它不起作用?因为我很懒,而且我不喜欢键入太多东西,它当然起作用:)事实上,您问了两个问题。第二种可能是合法的,也可能是有趣的,第一种只是琐碎的,容易导致第二种被忽视,并且承认它是懒惰促成的,这将吸引下一代。你花在键入问题上的时间比在IDE项目或makefile中键入一次要多。请你再解释一下好吗?我目前对静态链接和动态链接的理解不够深入,因为前者将在编译时引用预编译的.a或.lib文件,并组成一个大的可执行文件,而后者意味着.dll或.so(?)文件必须单独设置才能与可执行文件一起运行。只是简单的“链接”有什么不同吗?您对.a/lib(静态)与.so/.dll的理解完全正确。我赶紧补充一点,动态库是一件好事。“链接”将对象模块(.o/.obj)、静态库和动态库的任意组合绑定到一个可执行文件(.exe)中。最后注意:链接器自动地只包括最终可执行文件中“需要”的内容。共享库还有一个额外的好处,“需要什么”是在运行时确定的。和.so的/.dll可以在正在运行的进程之间“共享”。这可以提高内存使用效率。