it-swarm-vi.com

Làm thế nào để kiểm tra nếu một thư viện được cài đặt?

Trong linux, làm cách nào để kiểm tra xem thư viện đã được cài đặt hay chưa? (từ dòng lệnh của khóa học).

Trong trường hợp cụ thể của tôi bây giờ, tôi muốn kiểm tra xem libjpeg đã được cài đặt chưa.

172
hasen

Để thực hiện việc này theo cách phân tán * độc lập, bạn có thể sử dụng ldconfig với grep, như thế này:

ldconfig -p | grep libjpeg

Nếu libjpeg không được cài đặt, sẽ không có đầu ra. Nếu nó được cài đặt, bạn sẽ nhận được một dòng cho mỗi phiên bản có sẵn.

Thay thế libjpeg bằng bất kỳ thư viện nào bạn muốn và bạn có cách kiểm tra chung * độc lập với phân phối * về tính khả dụng của thư viện.

Nếu vì lý do nào đó, đường dẫn đến ldconfig không được đặt, bạn có thể thử gọi nó bằng đường dẫn đầy đủ của nó, thường là /sbin/ldconfig.

** 99% số lần *

222
faken

Bạn có thể kiểm tra với người quản lý gói phân phối của mình (aptitude, yum, ...) nhưng vì bạn không cung cấp cho bản phân phối của mình nên tôi không thể đưa ra lệnh đúng.

Một cách khác có thể là chạy gcc -ljpeg, nếu bạn nhận được 'ld: thư viện không tìm thấy cho -ljpeg', điều đó có nghĩa là gcc chưa tìm thấy thư viện (nhưng điều đó không có nghĩa là nó chưa được cài đặt), nếu bạn nhận được một cái gì đó như 'Biểu tượng không xác định: "_main" , được tham chiếu từ: ... 'nó có nghĩa là libjpeg đã được tìm thấy.

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* là một số cách khác để tìm nếu lib được cài đặt trong hệ thống

Có nhiều cách khác để kiểm tra xem, nếu bạn cung cấp cho chúng tôi nhiều ngữ cảnh hơn (tại sao bạn cần kiểm tra xem libjpeg đã được cài đặt chưa), chúng tôi có thể cung cấp cho bạn giải pháp tốt nhất cho trường hợp cụ thể của bạn.

34
radius

Tôi sử dụng tiện ích whereis.

Mẫu vật:

[email protected]:~$ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la
17
lifchicker

Tôi sử dụng cái này:

gcc -lpng

Khi lib được cài đặt, nó mang lại:

undefined reference to 'main'

Khi lib là không được cài đặt:

cannot find -lpng
12
AndreLDM

Đối với phân phối dựa trên deb, bạn có thể làm

dpkg -s packagename

Hoặc nếu bạn chỉ biết tên tệp, hãy sử dụng

locate filename

Tên tệp thường là libs Something.so [.version].

9
Kim

Trên các hệ thống dựa trên Redhat, người ta có thể sử dụng pkg-config để xác minh xem thư viện có được cài đặt hay không. Nhiều nhị phân vòng/phút thực sự thực hiện các kiểm tra tương tự trước khi tiến hành cài đặt, vì vậy chúng ta có thể dựa vào tính xác thực của nó một cách hợp lý.

pkg-config --cflags jpeg

pkg-config --libs jpeg

pkg-config --cflags "jpeg >= 1.0.0" # for version check
pkg-config  --modversion jpeg | awk -F. '{ printf "0x%02X%02X%02X\n",$1,$2,$3 }' #version check
4
Saasira

Điều này được thực hiện bởi các công cụ cấu hình trên linux mọi lúc.

Nhìn vào đây Hướng dẫn về autoconf và KDevelop .

Các thủ thuật khác sẽ sử dụng các lệnh như ldconfigdpkg.

2
nik

Bạn cũng có thể thử sử dụng dpkg để kiểm tra xem nó đã được cài đặt chưa.

dpkg --list | grep [some_key_words_of_your_lib]

Bên cạnh đó, trên CentOS, bạn có thể thử điều này.

rpm -qa [lib_name]

1
Scott Yang