与gcc和g ++的链接有何不同?

Let*_*_Be 8 c c++ linker gcc

gcc和g ++之间的链接过程有什么不同吗?

我有一个很大的C项目,我只是将部分代码切换到C++.代码尚未使用std C++库,因此-llibstdc++现在不需要.

Mar*_*k B 8

主要区别在于(假设文件被检测为C++)g ++设置了与C++标准库链接所需的标志.它还可以设置异常处理.我不会依赖这样的事实,因为你的应用程序不使用标准库,而在编译为C++时不需要它(例如默认的异常处理程序).

编辑:正如在评论中指出的那样,对于静态对象的任何构造函数(确实有效)以及不获取虚函数表都会遇到问题(因此,如果您使用C++的这些功能,则仍需要链接该库) .

编辑2:除非您在C项目中使用C99特定代码,否则我实际上只是转换为将整个事件编译为C++作为迁移过程的第一步.

  • 不要忘记使用构造函数和析构函数初始化`static`和全局对象; 他们的魔力在于仅在C++模式下链接的启动例程. (2认同)