gpt4 book ai didi

gcc - --start-group 和 --end-group 命令行选项是什么?

转载 作者:行者123 更新时间:2023-12-03 05:18:33 26 4
gpt4 key购买 nike

这些命令行选项的用途是什么?请帮忙解读以下命令行的含义:

-Wl,--start-group -lmy_lib -lyour_lib -lhis_lib -Wl,--end-group -ltheir_lib

显然它与链接有关,但 GNU 手册并没有明确说明分组的确切含义。

最佳答案

它用于解决多个库之间的循环依赖(在 -(-) 之间列出)。

引用Why does the order in which libraries are linked sometimes cause errors in GCC?man ld http://linux.die.net/man/1/ld

-( archives -) or --start-group archives --end-group

The archives should be a list of archive files. They may be either explicit file names, or -l options.

The specified archives are searched repeatedly until no new undefined references are created. Normally, an archive is searched only once in the order that it is specified on the command line. If a symbol in that archive is needed to resolve an undefined symbol referred to by an object in an archive that appears later on the command line, the linker would not be able to resolve that reference. By grouping the archives, they all be searched repeatedly until all possible references are resolved.

Using this option has a significant performance cost. It is best to use it only when there are unavoidable circular references between two or more archives.

因此,组内的库可以多次搜索新符号,并且您不需要像 -llib1 -llib2 -llib1 这样的丑陋结构

PS 存档基本上意味着静态库(*.a 文件)

关于gcc - --start-group 和 --end-group 命令行选项是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5651869/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com