2015-04-14 25 views
8

Tôi đang cố gắng để biên dịch một chương trình nhưng nó ném các lỗi sau:ld không thể tìm thấy udev

[cc] /usr/bin/ld: cannot find -ludev 

Tôi đã kiểm tra các chủ đề khác trên SO nhưng các câu trả lời là để cài đặt một cái gì đó trong khi tôi dường như có libudev cài đặt .

Trong/lib/x86_64-linux-gnu Tôi cũng có:

lrwxrwxrwx 1 root root  16 lut 19 21:30 libudev.so.1 -> libudev.so.1.3.5 
-rw-r--r-- 1 root root 67600 lut 19 21:31 libudev.so.1.3.5 

tôi đã cố gắng liên kết libudev.so.0 để libudev.so.1 nhưng nó vẫn không làm việc. Ld tìm kiếm là gì và tại sao nó không hoạt động? Làm sao tôi có thể giải quyết việc này?

Trả lời

14

Khi bạn sử dụng -lfoo trình liên kết sẽ tìm kiếm tệp có tên libfoo.a hoặc libfoo.so.

Vì vậy, trong trường hợp của bạn, bạn cần libudev.so mà không có bất kỳ số hậu tố nào.

Một số bản phân phối Linux, chẳng hạn như Debian và các dẫn xuất (Ubuntu?), Không cài đặt các liên kết tượng trưng này theo mặc định. Vì vậy, thay vì tự tạo liên kết tượng trưng đó, trước tiên hãy thử tìm gói *-dev (libudev-dev).

+0

Đã làm việc :). Cảm ơn! – user294034

0

ld là lệnh cho trình liên kết, bạn cần cập nhật biến số LIBPATH để bao gồm vị trí thư viện.

kiểm tra giá trị của biến env LIBPATH và thay đổi thành LIBPATH=LIBPATH:<lib location> và biên dịch lại.

+0

Có phải bình thường trong "echo $ LIBPATH" mặc định không cho tôi biết điều gì không? (một chuỗi rỗng) – user294034

Các vấn đề liên quan