建筑C动态共享库提供了未定义的符号



为什么构建静态库(.a(没有给出任何错误并正确工作:

$(LIBRARY): assertion.o
    $(AR) $(OUTPUT_STATIC_LIB_DIR)/$(LIBRARY) $(OUTPUT_DIR)/assertion.o

同时,当构建共享库(.SO(时给我这样的错误:

$(SHARED_LIBRARY): assertion.o
    $(CC) $(CFLAGS) -shared -o $(OUTPUT_LIB_DIR)/$(SHARED_LIBRARY) $(OUTPUT_DIR)/assertion.o

错误消息:

Undefined symbols for architecture x86_64:
  "_float_cmp_func", referenced from:

库的代码确实是指" _float_cmp_func",需要在运行时找到。

但是,静态库预计不会成为足够的二进制模块,它只是对象代码的集合,其旨在将其包含在以后的构建/链接步骤中(与其他对象代码和库一起(。

相比之下,共享库是"现成的"二进制模块,因此应在链接阶段解决其依赖项。因此,在这种情况下,您应该添加到链接步骤中的某些模块,其中" _float_cmp_func"实现了

最新更新