Rumah >pembangunan bahagian belakang >C++ >Mengapa Pemaut Saya Tidak Dapat Menemui `-l`?

Mengapa Pemaut Saya Tidak Dapat Menemui `-l`?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-03 07:11:39741semak imbas

Why Can't My Linker Find `-l`?

"usr/bin/ld: cannot find -l" Panduan Penyelesaian Masalah

Apabila menyusun atur cara, menghadapi ralat "usr/bin/ld: cannot find -l" menunjukkan bahawa pemaut tidak dapat mengesan perpustakaan yang ditentukan. Untuk menyelesaikan isu ini, gunakan langkah penyelesaian masalah berikut:

1. Sahkan Kewujudan Perpustakaan:

Pastikan perpustakaan yang anda rujuk wujud di lokasi yang ditentukan. Jalankan arahan berikut untuk menyenaraikan semua perpustakaan yang tersedia:

ldconfig -p | grep <nameOfTheLibrary>

2. Pengesahan Pautan Simbolik:

Jika anda telah mencipta pautan simbolik ke pustaka, sahkan bahawa ia betul dan tuding ke fail perpustakaan sebenar. Gunakan arahan "ls -l" untuk melihat pautan:

ls -l <symbolicLink>

3. Output Pemaut Verbose:

Untuk menentukan fail khusus yang sedang dicari oleh pemaut, jalankannya dalam mod verbose. Tambahkan bendera "--verbose" pada arahan pemautan:

ld -l<nameOfTheLibrary> --verbose

Output akan menunjukkan semua direktori dan fail berpotensi yang sedang dipertimbangkan oleh pemaut.

4. Pasang Perpustakaan yang Hilang:

Jika perpustakaan tidak wujud atau tidak dapat ditemui, pasangkannya menggunakan pengurus pakej anda. Contohnya, pada sistem berasaskan Debian:

sudo apt-get install <nameOfTheLibrary>-dev

5. Tambahkan Laluan Pustaka pada Perintah:

Dalam sesetengah kes, pemaut mungkin tidak dapat mencari pustaka secara automatik. Anda boleh menentukan laluan perpustakaan secara manual menggunakan bendera "-L":

g++ -o myprogram myprogram.cpp -l<nameOfTheLibrary> -L/path/to/library

Contoh:

Untuk menyelesaikan isu yang diterangkan dalam masalah yang dirujuk, di mana pemaut tidak dapat mencari pustaka ZLIB:

  1. Pastikan bahawa fail zlib.so wujud dalam direktori yang ditentukan atau buat symlink ke fail versi (zlib.so.N).
  2. Jalankan ld -lzlib --verbose untuk mengesahkan fail yang sedang dicari.
  3. Jika zlib.so tiada, buat symlink ke fail versi sedia ada:
sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so

Atas ialah kandungan terperinci Mengapa Pemaut Saya Tidak Dapat Menemui `-l`?. 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