繁体   English   中英

与 gcc 与 g++ 链接有什么区别?

[英]Any difference in linking with gcc vs. g++?

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

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

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

编辑:正如评论中所指出的,对于 static 对象以及没有获得虚拟 function 表的任何构造函数(有效),您都会遇到问题(因此,如果您使用 ZF6F87C9FDCF8B3C3F97F14Z 表的这些功能,您仍然需要链接到该库) .

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

gccg++都只是驱动程序,除了调用其他程序之外什么都不做,因此您可以使用-v选项来查看它们的确切功能——它们使用什么参数调用其他程序。 因此,对于您碰巧安装的 gcc 的特定版本和架构,您可以确切地看到与gccg++链接之间有什么区别。 但是,如果您想要便携性,则不能依赖于保持不变。

根据您在做什么,您可能还对-###参数感兴趣

I think that the g++ linker will look for the CPP mangled function names, and it is different from the C ones. 我不确定 gcc 能否应对。 (前提是您可以明确使用 C 版本而不是 C++ 版本)。

编辑:

如果你有它应该工作

extern "C" {
<declarations of stuff that uses C linkage>
}

在您的代码中,并且 object 文件已使用g++ -c编译。 但我不会赌这个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM