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

Mengapa Pemaut Saya Tidak Dapat Menemui `-l`?

Mary-Kate Olsen
Lepaskan: 2025-01-03 07:11:39
asal
806 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan