@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里面. 我其实也不明白为什么这么蛋疼.