Tôi đang cố liên kết ứng dụng với g ++ trên hệ thống lenny Debian này. ld đang phàn nàn nó không thể tìm thấy các thư viện được chỉ định. Ví dụ cụ thể ở đây là ImageMagick, nhưng tôi cũng gặp vấn đề tương tự với một vài thư viện khác.ld không thể tìm thấy thư viện hiện có
tôi kêu gọi các mối liên kết với:
g++ -w (..lots of .o files/include directories/etc..) \
-L/usr/lib -lmagic
ld phàn nàn:
/usr/bin/ld: cannot find -lmagic
Tuy nhiên, libmagic tồn tại:
$ locate libmagic.so
/usr/lib/libmagic.so.1
/usr/lib/libmagic.so.1.0.0
$ ls -all /usr/lib/libmagic.so.1*
lrwxrwxrwx 1 root root 17 2008-12-01 03:52 /usr/lib/libmagic.so.1 -> libmagic.so.1.0.0
-rwxrwxrwx 1 root root 84664 2008-09-09 00:05 /usr/lib/libmagic.so.1.0.0
$ ldd /usr/lib/libmagic.so.1.0.0
linux-gate.so.1 => (0xb7f85000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7f51000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7df6000)
/lib/ld-linux.so.2 (0xb7f86000)
$ sudo ldconfig -v | grep "libmagic"
libmagic.so.1 -> libmagic.so.1.0.0
Làm thế nào để chẩn đoán vấn đề này hơn nữa, và những gì có thể sai? Tôi đang làm điều gì đó hoàn toàn ngu ngốc?
mà làm việc, tôi loại bối rối rằng nó sẽ đặt tên cho tập tin trong một cách hoàn toàn vô dụng theo mặc định - bạn có thể cung cấp bất kỳ cái nhìn sâu sắc tại sao nó sẽ làm điều này theo mặc định? – maxpenguin
Rất có thể đó là cấu hình sai của tập lệnh cài đặt – grepsedawk
Foo.so.1 cũng là một liên kết tượng trưng cho foo.so.1.0.0. Bằng cách này, bạn có thể có một vài phiên bản của một thư viện trong hệ thống của bạn, và nếu một ứng dụng cần một cái cụ thể, nó có thể liên kết với nó, trong khi nói chung, một phiên bản mới nhất được chọn bởi symlink. Tôi không biết tại sao liên kết này bị thiếu. – Svante