Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Memautkan Fortran dan Binari C Menggunakan GCC: Panduan untuk Menyelesaikan Ralat Rujukan Tidak Ditakrifkan?

Bagaimana Memautkan Fortran dan Binari C Menggunakan GCC: Panduan untuk Menyelesaikan Ralat Rujukan Tidak Ditakrifkan?

Barbara Streisand
Barbara Streisandasal
2024-10-27 03:49:29762semak imbas

How to Link Fortran and C   Binaries Using GCC: A Guide to Resolving Undefined Reference Errors?

Memautkan Fortran dan Binari C Menggunakan GCC

Memautkan projek yang menggunakan kedua-dua kod Fortran dan C boleh mencabar kerana ketidakserasian antara yang berkaitan perpustakaan. Apabila cuba menyusun dan memautkan projek tersebut menggunakan g atau gfortran, ralat rujukan yang tidak ditentukan sering berlaku.

Sebagai contoh, pertimbangkan kod berikut:

<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>

Menyusun fail ini dengan g atau gfortran secara berasingan menghasilkan fail objek, tetapi memautkannya bersama-sama menggunakan g menghasilkan rujukan yang tidak ditentukan kepada perpustakaan Fortran. Begitu juga, penggunaan gfortran menghasilkan rujukan yang tidak ditentukan kepada perpustakaan C.

Untuk menyelesaikan isu ini, adalah perlu untuk memautkan dalam perpustakaan yang sesuai semasa peringkat pemautan. Untuk g , ini boleh dicapai dengan menambahkan bendera -lgfortran pada arahan pautan:

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

Bendera ini akan dipautkan dalam perpustakaan Fortran yang diperlukan. Sebagai alternatif, gfortran boleh digunakan dengan bendera -lstdc untuk dipautkan dalam perpustakaan C yang diperlukan:

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

Dengan menentukan bendera pemautan yang sesuai, pengaturcara boleh berjaya memautkan projek yang menggabungkan kod Fortran dan C, membenarkan mereka untuk memanfaatkan keupayaan kedua-dua bahasa dalam aplikasinya.

Atas ialah kandungan terperinci Bagaimana Memautkan Fortran dan Binari C Menggunakan GCC: Panduan untuk Menyelesaikan Ralat Rujukan Tidak Ditakrifkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn