@czp 讲道理两个应该都可以...
链接静态库会有这个问题.
然后sw5cc都是静态链接.
静态链接的过程相当于:
call_list = []
link_list = []
for parameter in parameter_list:
if parameter.endswith(".o"):
for function in parameter.find_external_function_call():
call_list.append(function)
if parameter.endswith(".a") or parameter.startswith("-l"):
for function in parameter.get_functions():
if function in call_list:
link_list.append(function)
for function in call_list:
if function not in link_list:
print("undefined reference to " + function)
大概很抽象的描述一下就是这样的...
所以你的.a或者-l放在.o前面, call_list是空的, 于是就认为: 你不需要这个静态库里面的任何函数, pass掉这个静态库.
用-Wl,--whole-archive也是为了解决这个问题, 方式是强制把这个静态库里面所有东西丢到link_list里面.
我其实也不明白为什么这么蛋疼.