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

问题描述:

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

./configure CC=cc CXX=CC 

它的工作原理,但是,当我运行“使”,我得到了一些错误,这些错误防止生成库。

当使用gcc和g ++时,一切正常,没有错误,所以我想知道:我可以使用gcc/g ++生成的库如果我已经用cc生成了它们,/CC?

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

+0

当然取决于如何配置GCC,但它应该自然创建与本地编译器相同的本机格式的对象和可执行文件。否则,根本无法使用GCC。 –

+0

@JoachimPileborg好的,谢谢你的回答。 – louisiuol

几乎可以互换地使用gccccC编译器

你可以以某种方式混合g++CCC++编译器,但只在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选择不同版本的克++或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宏设置为'G'。

的C++ 0x(零-X,不是OH-X)

等效于C++ 11。

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

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

注意,多功能12.4 CC编译器使用g++头文件和库供货捆绑在CC编译器本身。 12.3和更早的版本使用g++头文件和库,安装在系统下的/usr/sfw

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