Ubuntu 10.10 でコードをビルドして実行することができました。このコードは、GCC 4.5 でコンパイルされた C++ と、最新バージョンの ifort でコンパイルされた fortran の両方を使用しています。数年前のバージョンの GCC で古い組み込み Linux プラットフォームをサポートする必要がある場合があります (まだクライアントからの仕様を待っています)。残念ながら、彼らのソフトウェアとハードウェアは軍事用に仕様が定められているため、アップグレードすることはできません. 私の質問は、古いバージョンの GCC でアプリケーションをビルドし、それを最新バージョンの ifort でコンパイルされたライブラリとリンクする際に、ABI の問題に直面する可能性が高いですか?
1 に答える
1
C++ から Fortran コードを呼び出すか、Fortran から C++ コードを呼び出すか、またはその両方を試みていますか? C++ から Fortran コードを呼び出す場合、特に同じ Fortran コンパイラを使用している場合は、問題はないと思います。
Fortran から C++ コードにアクセスしようとしている場合、これは C++ コードの性質によって異なります。C ABI は標準化されているため、Fortran でアクセス可能な関数が C リンケージを使用している場合は問題ありません。関数が C++ リンケージを使用している場合、C++ ABI は標準化されておらず、GCC が何年にもわたって ABI にマイナーな (そしておそらくメジャーな) 変更を加えていると確信しているため、問題が発生することが予想されます。
于 2011-02-19T02:29:36.067 に答える