C ++ / Fortran inter语言ABI与旧版本的GCC有关

时间:2011-02-11 09:40:23

标签: c++ gcc fortran intel-fortran abi

我们已经设法在Ubuntu 10.10上构建并运行我们的代码。该代码使用了使用GCC 4.5编译的C ++和使用最新版本的ifort编译的fortran。我们可能需要支持一个较旧的嵌入式Linux平台,其中包含几年前的GCC版本(仍在等待来自客户端的规范)。不幸的是,他们的软件和硬件已用于军事用途,因此无法升级。我的问题是,我们是否可能面临使用旧版GCC构建应用程序的ABI问题,并将其与使用最新版本的ifort编译的库链接?

1 个答案:

答案 0 :(得分:1)

您是否尝试从C ++调用Fortran代码,从Fortran调用C ++代码,或两者兼而有之?如果你从C ++调用Fortran代码,我认为你没有问题,特别是如果你使用相同的Fortran编译器。

如果您尝试从Fortran访问C ++代码,这将取决于C ++代码的性质。如果Fortran可访问的函数使用C链接,那么你应该没问题,因为C ABI是标准化的。如果这些函数使用C ++链接,我希望会遇到一些麻烦,因为C ++ ABI没有标准化,我确信GCC多年来对它们的ABI做了一些小的(可能是主要的)更改。