我们已经设法让我们的代码在 Ubuntu 10.10 上构建和运行。该代码使用了用 GCC 4.5 编译的 C++ 和用最新版本的 ifort 编译的 fortran。我们可能需要使用几年前的 GCC 版本支持较旧的嵌入式 linux 平台(仍在等待客户的规范)。不幸的是,他们的软件和硬件已指定用于军事用途,因此无法升级。我的问题是我们是否可能会面临 ABI 问题,使用旧版本的 GCC 构建我们的应用程序并将其与使用最新版本 ifort 编译的库链接?
问问题
412 次
1 回答
1
您是在尝试从 C++ 调用 Fortran 代码,还是从 Fortran 调用 C++ 代码,或者两者兼而有之?如果您从 C++ 调用 Fortran 代码,我认为您不会有问题,特别是如果您使用相同的 Fortran 编译器。
如果您尝试从 Fortran 访问 C++ 代码,这将取决于 C++ 代码的性质。如果 Fortran 可访问的函数使用 C 链接,那么您应该没问题,因为 C ABI 是标准化的。如果函数使用 C++ 链接,我预计会遇到一些麻烦,因为 C++ ABI 不是标准化的,而且我确信 GCC 多年来对其 ABI 进行了微小(可能是重大)的更改。
于 2011-02-19T02:29:36.067 回答