c++ - 与 gcc 和 g++ 的链接有什么区别?

标签 c++ c gcc linker

gcc和g++的链接过程有什么区别吗?

我有一个很大的 C 项目,我只是将部分代码转换为 C++。该代码尚未使用标准 C++ 库,因此暂时不需要 -llibstdc++

最佳答案

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

编辑:正如评论中所指出的那样,您将遇到静态对象的任何构造函数(确实有效)以及无法获得虚函数表的问题(因此,如果您使用的是 C++ 的这些功能,您仍然需要链接那个图书馆)。

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

关于c++ - 与 gcc 和 g++ 的链接有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6735277/

相关文章:

c++ - GCC 以错误的方式解压 (I < ...) 折叠表达式

c++ - 在 C++ 中隐藏 namespace

字符数组不可分配

c++ - 将 boost-di 与配置文件和共享库一起使用

C printf 变量的地址

c - 如何获取当前用户的用户名?

macos - 如何在 Mac OSX 下使用 gcc 设置可执行文件的运行时路径(-rpath)?

c++ - 如何将静态库或共享库链接到内核模块?

动态数组的 C++ 内存泄漏

python - Ctypes:将指针传递给使用sprintf的dll函数时, “Debug assertion failed”(string!= NULL)