Heim >Backend-Entwicklung >C++ >Wie verknüpfe ich Fortran- und C-Binärdateien mithilfe von GCC miteinander?

Wie verknüpfe ich Fortran- und C-Binärdateien mithilfe von GCC miteinander?

DDD
DDDOriginal
2024-10-26 21:31:03684Durchsuche

How to Link Fortran and C   Binaries Together Using GCC?

Verknüpfen von Fortran- und C-Binärdateien mit GCC

Um C- und Fortran-Code mithilfe von gcc zu verbinden, müssen bestimmte Schritte befolgt werden.

Angenommen, Sie haben den folgenden Code:

// print_hi.f90
subroutine print_hi() bind(C)
  implicit none
  write(*,*) "Hello from Fortran."
end subroutine print_hi

// main.cpp
#include <iostream>
extern "C" void print_hi(void);
using namespace std;
int main() {
  print_hi();
  cout << "Hello from C++" << endl;
  return 0;
}

Nachdem Sie die einzelnen Objektdateien mit kompiliert haben

gfortran -c print_hi.f90 -o print_hi.o
g++ -c main.cpp -o main.o

Um diese Binärdateien miteinander zu verknüpfen, müssen Sie die entsprechenden einschließen Bibliotheken. Wenn Sie g verwenden, sollten Sie die Fortran-Bibliothek hinzufügen mit:

g++ main.o print_hi.o -o main -lgfortran

Dazu gehört die notwendige Bibliothek für Fortran-Funktionen.

Alternativ können Sie, wenn Sie gfortran verwenden, C einschließen Bibliothek:

gfortran main.o print_hi.o -o main -lstdc++

Das Einbeziehen dieser Bibliotheken gewährleistet die ordnungsgemäße Auflösung von Symbolen und ermöglicht eine reibungslose Ausführung der verknüpften Binärdatei.

Das obige ist der detaillierte Inhalt vonWie verknüpfe ich Fortran- und C-Binärdateien mithilfe von GCC miteinander?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn