在Solaris上,使用gcc编译的库是否与使用cc生成的库相同?

时间:2016-07-08 07:09:14

标签: gcc compilation solaris libxml2 cc

我目前正在尝试在Solaris上编译libxml2 。当我运行随源提供的./configure脚本时,会自动使用gcc和g ++编译器。但是,我想使用cc和CC编译器。所以我跑:

./configure CC=cc CXX=CC

它有效,但是当我运行“ make ”时,我遇到一些错误,导致无法生成库。

当使用gcc和g ++时,一切顺利,没有错误,所以我想知道:我可以使用gcc / g ++生成的库,就像我使用它们一样,如果我已经连续生成了它们立方厘米/ CC吗

使用cc生成的lib与Solaris上使用gcc生成的lib相同有什么区别?

1 个答案:

答案 0 :(得分:3)

您可以互换使用gcccc C编译器

您可以通过某些方式混合g++CC C ++编译器,但仅限于x86 Solaris,并且CC编译器是否足够新-compat=g选项可用。

GNU g++和Solaris Studio CC C ++编译器默认使用完全不同的ABI和C ++运行时库。在x86 Solaris平台上,较新的版本(自12版以来。?,如果我没记错的话)提供-compat=g选项来使用g ++ ABI和运行时库。 Studio 12.4 CC compiler adds a -std=v option选择不同版本的g ++或Sun C ++ ABI和运行时库:

  

c ++ 03(零-3,不是oh-3)

     

相当于-compat=g选项。它选择C ++ 03方言和g ++ ABI;它与Solaris和Linux上的g ++二进制兼容   将__SUNPRO_CC_COMPAT预处理器宏设置为' G'。

     

<强> C ++ 11

     

选择C ++ 11方言和g ++二进制兼容性。它将__SUNPRO_CC_COMPAT preprocessor宏设置为&#39; G&#39;。

     

c ++ 0x(零x,不是oh-x)

     

相当于c ++ 11。

  

-std=c++03提供与gcc / g ++编译器的兼容性   所有Oracle Solaris和Linux平台。

     

使用-std=c++03,二进制兼容性仅扩展到共享   (动态或.so)库,而不是单个.o文件或存档(.a)   库。使用的gcc头文件和库是随附的   编译器,而不是系统上安装的gcc版本。

请注意,Studio 12.4 CC编译器使用与g++编译器本身捆绑在一起的CC标头和库。 12.3及更早版本使用g++下的系统上安装的/usr/sfw标头和库。

在SPARC Solaris上,您必须对整个应用程序使用g++CC