静态与动态库中的符号解析 有一个自由软件项目,它可以构建一些静态C++库,然后 将它们链接成二进制文件。我想把图书馆分成两部分 .so用于动态链接的文件(以便其他项目可以使用 自由党)。一个库构建得很好,但是当我尝试链接 如果是这样,我会出现“未定义引用”错误
这些很容易跟踪和修复(代码引用了这些 方法,但相应的.cc文件不存在 包含在Makefile编译命令中)。但是我是,, 想知道为什么,作为一个普遍的问题,一个图书馆会链接 可以作为静态库使用,但不能作为动态库使用。是什么 g++和ld在一种情况下做什么,而不是在另一种情况下静态与动态库中的符号解析 有一个自由软件项目,它可以构建一些静态C++库,然后 将它们链接成二进制文件。我想把图书馆分成两部分 .so用于动态链接的文件(以便其他项目可以使用 自由党)。一个库构建得很好,但是当我尝试链接 如果是这样,我会出现“未定义引用”错误,c++,c,g++,shared-libraries,ld,C++,C,G++,Shared Libraries,Ld,这些很容易跟踪和修复(代码引用了这些 方法,但相应的.cc文件不存在 包含在Makefile编译命令中)。但是我是,, 想知道为什么,作为一个普遍的问题,一个图书馆会链接 可以作为静态库使用,但不能作为动态库使用。是什么 g++和ld在一种情况下做什么,而不是在另一种情况下 非常感谢。使用ar创建的静态库只不过是一堆对象文件ar是一个非常简单的归档程序。链接时没有解决依赖关系,请参阅ar的手册页 另一方面,共享对象,或者您称之为动态库的对象是一个非常不同的野兽。它们实现ELF二进制格式,并具有复
非常感谢。使用ar创建的静态库只不过是一堆对象文件ar是一个非常简单的归档程序。链接时没有解决依赖关系,请参阅ar的手册页
另一方面,共享对象,或者您称之为动态库的对象是一个非常不同的野兽。它们实现ELF二进制格式,并具有复杂的规则集。它们还有初始化代码,一些依赖项在链接时被解析。有关更深入的介绍,请参见和。使用ar创建的静态库只不过是一组对象文件ar是一个非常简单的归档程序。链接时没有解决依赖关系,请参阅ar的手册页 另一方面,共享对象,或者您称之为动态库的对象是一个非常不同的野兽。它们实现ELF二进制格式,并具有复杂的规则集。它们还有初始化代码,一些依赖项在链接时被解析。有关更深入的介绍,请参见和 但当我尝试链接它时,会出现“未定义引用”错误 显示您的链接命令。链接共享库时通常不会出现“未定义引用”错误,因为共享库(默认情况下)允许有未解析的符号 或者,您的意思是,当您将最终可执行文件链接到共享库时,会出现“未定义引用”错误 但当我尝试链接它时,会出现“未定义引用”错误 显示您的链接命令。链接共享库时通常不会出现“未定义引用”错误,因为共享库(默认情况下)允许有未解析的符号
或者,您的意思是,当您将最终可执行文件链接到共享库时,会出现“未定义引用”错误?未引用的对象实际位于具有静态libs的构建中的何处?是其他静态库、共享库还是.o文件?引用是由什么构成的,其中一个库?未引用的对象实际位于具有静态libs的构建中的何处?是其他静态库、共享库还是.o文件?参考文献是什么,其中一个图书馆?谢谢,乔。这些链接很有用。如果答案有用,那么你仍然可以投票/接受它,JLV。谢谢,Jorg。这些链接很有用。如果答案有用,那么你仍然可以投票/接受它,JLV。