我目前正在尝试在Solaris上编译libxml2 。当我运行随源提供的./configure脚本时,会自动使用gcc和g ++编译器。但是,我想使用cc和CC编译器。所以我跑:
./configure CC=cc CXX=CC
它有效,但是当我运行“ make ”时,我遇到一些错误,导致无法生成库。
当使用gcc和g ++时,一切顺利,没有错误,所以我想知道:我可以使用gcc / g ++生成的库,就像我使用它们一样,如果我已经连续生成了它们立方厘米/ CC吗
使用cc生成的lib与Solaris上使用gcc生成的lib相同有什么区别?
答案 0 :(得分:3)
您可以互换使用gcc
或cc
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
预处理器宏设置为&#39; G&#39;。<强> 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
。