Verknüpfen von Fortran- und C-Binärdateien mithilfe von GCC
Das Verknüpfen von Projekten, die sowohl Fortran- als auch C-Code verwenden, kann aufgrund der Inkompatibilitäten zwischen den zugehörigen eine Herausforderung sein Bibliotheken. Beim Versuch, solche Projekte mit g oder gfortran zu kompilieren und zu verknüpfen, treten häufig undefinierte Referenzfehler auf.
Bedenken Sie beispielsweise den folgenden Code:
<code class="fortran">subroutine print_hi() bind(C) implicit none write(*,*) "Hello from Fortran." end subroutine print_hi</code>
<code class="cpp">#include <iostream> extern "C" void print_hi(void); using namespace std; int main() { print_hi(); cout << "Hello from C++" << endl; return 0; }</code>
Kompilieren dieser Dateien mit g oder gfortran erzeugt separat Objektdateien, aber das Verknüpfen dieser mithilfe von g führt zu undefinierten Verweisen auf Fortran-Bibliotheken. Ebenso führt die Verwendung von gfortran zu undefinierten Verweisen auf C-Bibliotheken.
Um dieses Problem zu beheben, ist es notwendig, während der Verknüpfungsphase die entsprechenden Bibliotheken einzubinden. Für g kann dies durch Hinzufügen des Flags -lgfortran zum Link-Befehl erreicht werden:
g++ main.o print_hi.o -o main -lgfortran
Dieses Flag verknüpft die erforderlichen Fortran-Bibliotheken. Alternativ kann gfortran mit dem Flag -lstdc verwendet werden, um die erforderlichen C-Bibliotheken zu verknüpfen:
gfortran main.o print_hi.o -o main -lstdc++
Durch Angabe der entsprechenden Verknüpfungsflags können Programmierer erfolgreich Projekte verknüpfen, die Fortran und C-Code kombinieren, was ihnen dies ermöglicht Nutzen Sie die Fähigkeiten beider Sprachen in ihren Anwendungen.
Das obige ist der detaillierte Inhalt vonWie verknüpfe ich Fortran- und C-Binärdateien mithilfe von GCC: Eine Anleitung zur Behebung undefinierter Referenzfehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!