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

在Solaris上,使用gcc编译的库是否与使用cc生成的LIB的可用方式相同?,gcc,compilation,solaris,libxml2,cc,Gcc,Compilation,Solaris,Libxml2,Cc,我目前正在尝试在Solaris上编译libxml2。当我运行源代码附带的./configure脚本时,会自动使用gcc和g++编译器。但是,我想使用cc和cc编译器。所以我跑: ./configure CC=cc CXX=CC 它可以工作,但是当我运行“make”时,会出现一些错误,这些错误会阻止库的生成 当使用gcc和g++时,一切都很顺利,没有任何错误,因此我想知道:我可以使用gcc/g++生成的库吗?如果我使用cc/cc连续生成库,我可以使用同样的方法吗? 在Solaris上,使用cc生

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

./configure CC=cc CXX=CC
它可以工作,但是当我运行“make”时,会出现一些错误,这些错误会阻止库的生成

当使用gcc和g++时,一切都很顺利,没有任何错误,因此我想知道:我可以使用gcc/g++生成的库吗?如果我使用cc/cc连续生成库,我可以使用同样的方法吗?


在Solaris上,使用cc生成的库与使用gcc生成的库有什么区别?

您可以非常互换地使用
gcc
cc
C编译器

您可以以某些方式混合使用
g++
CC
C++编译器,但仅限于x86 Solaris上,并且如果您的
CC
编译器足够新,可以使用
-compat=g
选项

<> > GNU代码> G++< /COD>和Solaris Studio>代码> cc> /Cuffe+C++编译器默认为完全不同的ABIs和C++运行库。在x86 Solaris平台上,较新的版本(如果我没记错的话,从版本12.?)开始)提供了一个
-compat=g
选项来使用g++ABI和运行时库。选择G+或Sun C++ + ABI和运行时库的不同版本:

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

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

c++11

选择C++ 11方言和G+2二进制兼容。它将

\u SUNPRO\u CC\u COMPAT预处理器
宏设置为“G”

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
编译器使用与
CC
编译器本身捆绑提供的
g++
头文件和库。12.3及更早版本使用系统上安装在
/usr/sfw
下的
g++
标题和库


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

这当然取决于GCC的配置方式,但它自然应该以与本机编译器相同的本机格式创建对象和可执行文件。否则就不可能使用GCC了。@JoachimPileborg好的,谢谢你的回答。