C++:obj 文件的链接顺序重要吗?
C++: Does the order that obj files are linked matter?
以声明和定义简单函数的头文件和实现文件以及包含调用该函数的 main() 的第二个实现文件的经典示例为例,编译器将生成两个目标文件。
1) 当 link 将这些文件生成可执行文件时,顺序重要吗?
This question 的答案表明顺序无关紧要。
This site明确同意,举个例子使用GCC。
2) 如果顺序很重要,那么像 Visual Studio 这样的 IDE 如何确定合适的 link 顺序?
我清楚地记得在使用 gcc/g++ 构建时遇到未解决的符号错误,并且需要更改 makefile 中目标文件的顺序来解决此问题。但是,我可能记错了 linking library 文件。
object 文件的链接顺序无关紧要。库顺序确实很重要,这是开发人员的责任。
老实说,链接器很古老。现代语言没有链接器,但 GCC 尤其竭尽全力与过去保持兼容。
以声明和定义简单函数的头文件和实现文件以及包含调用该函数的 main() 的第二个实现文件的经典示例为例,编译器将生成两个目标文件。
1) 当 link 将这些文件生成可执行文件时,顺序重要吗?
This question 的答案表明顺序无关紧要。
This site明确同意,举个例子使用GCC。
2) 如果顺序很重要,那么像 Visual Studio 这样的 IDE 如何确定合适的 link 顺序?
我清楚地记得在使用 gcc/g++ 构建时遇到未解决的符号错误,并且需要更改 makefile 中目标文件的顺序来解决此问题。但是,我可能记错了 linking library 文件。
object 文件的链接顺序无关紧要。库顺序确实很重要,这是开发人员的责任。
老实说,链接器很古老。现代语言没有链接器,但 GCC 尤其竭尽全力与过去保持兼容。