使用g+从gcc生成的对象链接共享对象库是否有优势+;?

使用g+从gcc生成的对象链接共享对象库是否有优势+;?,gcc,g++,shared-libraries,Gcc,G++,Shared Libraries,我最近遇到一个项目,它通过将gcc生成的对象文件(使用CCgnumakefile宏)与g++链接,创建了它的共享对象库 除了(可能)确保源代码被封装在\ifdef\uucplusplus/extern“c”{/#endif构造中以避免名称损坏问题之外,还有什么原因可以让它…更好吗?如果它们只与g++链接,然后添加预处理器检查和外部“c”是无用的,这只会在已经完成的链接阶段影响预处理和编译 他们可能希望确保异常可以通过他们的C库传播,但要做到这一点,他们只需要链接到libgcc而不是libstdc

我最近遇到一个项目,它通过将gcc生成的对象文件(使用
CC
gnumakefile宏)与g++链接,创建了它的共享对象库

除了(可能)确保源代码被封装在
\ifdef\uucplusplus/extern“c”{/#endif
构造中以避免名称损坏问题之外,还有什么原因可以让它…更好吗?

如果它们只与
g++
链接,然后添加预处理器检查和
外部“c”
是无用的,这只会在已经完成的链接阶段影响预处理和编译

他们可能希望确保异常可以通过他们的C库传播,但要做到这一点,他们只需要链接到libgcc而不是libstdc++

也许他们只是想让共享库依赖于libstdc++,这样库的用户也将依赖于libstdc++,而不必显式地链接到它,尽管这可能不会像他们预期的那样工作

所以,总之,如果所有代码都是C代码而不是C++代码,我想不出什么好的理由。
<> > > <强> >因为用<代码> GCC < /C>编译的东西并不意味着是C代码,可以使用<代码> GCC < /C>可执行文件编译C++代码,它将调用C++前端(<代码> Cc1Puls<代码>)代替C前端(<代码> cc1)如果C++代码使用标准库,那么您就需要链接到<代码> -LSTDC++< /COD> <强>或使用<代码> G++<代码>链接(它与<代码> -LSTDC++< /COD>自动链接)也许答案是C++代码,而编译对象的代码是“代码> GCC < /Cord> >不是代码> G++<代码>,这使你认为它是C代码。< /P>这已经是两个相当大的问题。与适当的C++标准库链接(并且有权包括这样的路径)这可能是另一个。@Mat它起作用了,我只是想知道它是否有优势。@Mat,你是什么意思?使用
g++
自动提供正确的路径。你的第一段总结了我的怀疑……这都是
c
代码。