2011-11-08 32 views
7

Tôi đã cài đặt gói libtcmalloc-minimal0Liên kết với ubuntu libtcmalloc

nhưng khi tôi cố gắng để biên dịch chương trình của tôi với cờ

-ltcmalloc-minimal0

Tôi nhận lỗi

/usr/bin/ld: không thể tìm thấy -ltcmalloc_minimal0

Tôi đã kiểm tra/usr/lib và thư viện là có

More Info

dpkg đưa ra sau o/p

dpkg -L libtcmalloc-minimal0 
/. 
/usr 
/usr/lib 
/usr/lib/libtcmalloc_minimal.so.0.0.0 
/usr/lib/libtcmalloc_minimal_debug.so.0.0.0 
/usr/share 
/usr/share/doc 
/usr/share/doc/libtcmalloc-minimal0 
/usr/share/doc/libtcmalloc-minimal0/TODO 
/usr/share/doc/libtcmalloc-minimal0/AUTHORS 
/usr/share/doc/libtcmalloc-minimal0/copyright 
/usr/share/doc/libtcmalloc-minimal0/changelog.gz 
/usr/share/doc/libtcmalloc-minimal0/README.gz 
/usr/share/doc/libtcmalloc-minimal0/changelog.Debian.gz 
/usr/lib/libtcmalloc_minimal.so.0 
/usr/lib/libtcmalloc_minimal_debug.so.0 

và tôi đang biên soạn cho chế độ 64 bit

và thư viện cũng là 64 bit

file /usr/lib/libtcmalloc_minimal.so.0.0.0 
/usr/lib/libtcmalloc_minimal.so.0.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped 
+0

Is nó được gọi chính xác là '/ usr/lib/libtcmalloc_minimal0.so'? Thư viện có đúng kiến ​​trúc không? (bạn có thể biên dịch ở chế độ 64 bit, trong khi thư viện bạn cài đặt là 32 bit) – wormsparty

+0

cả thư viện và chương trình là chế độ 64 bit –

+0

Vậy phần nào của mã sẽ yêu cầu tối thiểu libtcmalloc? Câu lệnh mới/xóa có yêu cầu không? – Naveen

Trả lời

6

Bạn không thể liên kết đơn giản vào một tập tin với -l nếu nó không kết thúc chính xác với .so, kể từ khi linker giả định một quy ước đặt tên cụ thể (lib*.so).

Bạn có nhiều lựa chọn:

  • Install libtcmalloc-minimal0-dev nếu nó tồn tại, mà nên cung cấp các liên kết động .so.

  • Tạo liên kết tượng trưng cho mình: cd /usr/lib; ln -s libtcmalloc_minimal.so.0.0.0 libtcmalloc_minimal.so; cd -

  • liên kết trực tiếp đến thư viện mà không có sự liên kết tượng trưng bằng cách sử dụng gcc test.c /usr/lib/libtcmalloc_minimal.so.0.0.0

  • liên kết bằng cách sử dụng tùy chọn -l sử dụng tên đầy đủ: -l:libtcmalloc_minimal.so.0.0.0

+0

Vậy phần nào của mã sẽ yêu cầu tối thiểu libtcmalloc? Câu lệnh mới/xóa có yêu cầu không? – Naveen

0

Chạy dpkg -L libtcmalloc-minimal0 sẽ cho bạn thấy rằng thư viện là /usr/lib/libtcmalloc_minimal.so.0 nên lựa chọn chính xác nên được -ltcmalloc_minimalmà không cần bất kỳ chữ số

+1

lỗi tương tự với ltcmalloc_minimal xem chỉnh sửa để xem dpkg o/p –

+1

có lẽ bạn cần chạy 'ldconfig'. Để hiểu 'gcc' đang làm gì, hãy chuyển nó qua cờ' -v'. –

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