关于so​​laris 9平台问题的c vs c ++

时间:2010-06-09 19:06:56

标签: c++ c solaris

我有一个与第三方共享的程序。我将为他们提供bin可执行文件。它是用c ++编写的,但也使用了一些c。他们建议它只需要c。您是否认为这将是一个问题,因为我将在sparc工作站上编译并构建它,这些工具将与solaris 9和芯片组(32或64)等系统规格相匹配,具体取决于它们使用的是什么?

是solaris 9能够编译我使用的c ++代码,或者他们需要在他们的末尾添加c ++运行时库。我正在使用c ++ std类。在任何情况下,如果我在我的最终建立它为什么担心他们有什么?它不是我正在分享的静态/动态库,我认为它会发挥作用。

好奇,因为他们说它需要是一个c编译。我怀疑他们是否期待一个lib然后我可能需要解决这个问题,但如果它只是一个可执行文件,那么系统规范如os和chipset是否重要?

如果我在这个假设中错了,请告诉我。

2 个答案:

答案 0 :(得分:1)

最糟糕的情况是,您始终可以在C ++运行时库中静态链接。

如果您只是向他们发送可执行文件,我不明白为什么语言会有任何不同。如果你也在分享代码,当然,这是一个完全不同的故事。

答案 1 :(得分:1)

由于您只向他们提供可执行文件(没有共享库),因此您不应该遇到太多麻烦。

只需在二进制文件上运行ldd命令,看看它链接的是哪些C ++库(例如,如果使用g ++,可能会看到libstdc ++);你应该包括那些与你的可执行文件。不要依赖拥有它们的用户,它们可能会丢失或者可能不兼容。您将需要使用-rpath(链接器开关)来确保您的二进制文件将使用您提供的库而不是系统中找到的任何库。

此外,最好在较旧的Solaris上进行编译以提供兼容性,即不在Solaris 10 for Solaris 7上编译,而是在7 for 10上编译。您可以获得ideea ...