Makefile 在make文件中,-wl,-start group是什么意思?

Makefile 在make文件中,-wl,-start group是什么意思?,makefile,Makefile,我的档案里有这个 # Create list of object files # LIB_OBJS = -Wl,--start-group \ $(T_OBJ_DIR)/Source1.o \ $(T_OBJ_DIR)/Source2.o \ $(T_OBJ_DIR)/Source3.o \ $(T_OBJ_DIR)/Source4.o \ $(T_OBJ_DIR)/Source5.o \ -Wl,--end-group \ 谁能解释一下“-Wl,-start group”和“-Wl,-en

我的档案里有这个

# Create list of object files
#
LIB_OBJS =  -Wl,--start-group \
$(T_OBJ_DIR)/Source1.o \
$(T_OBJ_DIR)/Source2.o \
$(T_OBJ_DIR)/Source3.o \
$(T_OBJ_DIR)/Source4.o \
$(T_OBJ_DIR)/Source5.o \
-Wl,--end-group \

谁能解释一下“-Wl,-start group”和“-Wl,-end group”是什么意思吗?

这些是链接器的标志(这就是
-Wl
的意思),所以
ld
(链接器)的文档将解释其余内容

从GNU ld的

-(档案-)

--开始组存档--结束组

档案应该是档案文件的列表。它们可以是显式文件名,也可以是-l选项

重复搜索指定的存档,直到没有创建新的未定义引用为止。通常,归档文件仅按命令行上指定的顺序搜索一次。如果需要该存档中的符号来解析稍后出现在命令行上的存档中的对象引用的未定义符号,则链接器将无法解析该引用。通过对归档文件进行分组,可以重复搜索所有归档文件,直到解决所有可能的引用

使用此选项会带来巨大的性能成本。最好仅在两个或多个档案之间存在不可避免的循环引用时使用


它们实际上没有效果。如Etan Reisner的回答中所述,
--start group
--end group
选项仅适用于存档(
.a
文件,也称为库)。对象文件(
.o
)不需要此选项,因为链接器将搜索所有对象文件以解析未定义的引用。