Tôi đang xây dựng một ứng dụng C++ sử dụng thư viện IPP của Intel. Thư viện này được cài đặt theo mặc định trong/opt và yêu cầu bạn đặt LD_LIBRARY_PATH
cả để biên dịch và chạy phần mềm của bạn (nếu bạn chọn liên kết thư viện được chia sẻ, mà tôi đã làm). Tôi đã sửa đổi configure.ac
/Makefile.am
của mình để tôi không cần đặt biến đó khi biên dịch, nhưng tôi vẫn không thể tìm thấy thư viện được chia sẻ trong thời gian chạy; Làm thế nào để làm điều đó?Làm cách nào để loại bỏ LD_LIBRARY_PATH tại thời gian chạy?
Tôi đang biên soạn với -Wl, -R/path/to/libdir
cờ sử dụng g++
Cập nhật 1: Trên thực tế chương trình nhị phân của tôi đã một số thư viện IPP liên kết một cách chính xác, nhưng chỉ cần một là không:
$ ldd myprogram
linux-vdso.so.1 => (0x00007fffa93ff000)
libippacem64t.so.6.0 => /opt/intel/ipp/6.0.2.076/em64t/sharedlib/libippacem64t.so.6.0 (0x00007f22c2fa3000)
libippsem64t.so.6.0 => /opt/intel/ipp/6.0.2.076/em64t/sharedlib/libippsem64t.so.6.0 (0x00007f22c2d20000)
libippcoreem64t.so.6.0 => /opt/intel/ipp/6.0.2.076/em64t/sharedlib/libippcoreem64t.so.6.0 (0x00007f22c2c14000)
[...]
libiomp5.so => not found
libiomp5.so => not found
libiomp5.so => not found
Dĩ nhiên thư viện ở đó:
$ locate libiomp5.so
/opt/intel/ipp/6.0.2.076/em64t/sharedlib/libiomp5.so
Tôi có thể cần phải thay đổi câu hỏi thành một thứ khác, nhưng tôi cần đề xuất, tôi viết tắt ý tưởng – Kjir
Hm, tôi tự hỏi có phải trùng hợp ngẫu nhiên là người đó cũng thiếu tiện ích mở rộng số phiên bản cài đặt chính nó phải không? – Cascabel
Tôi tự hỏi nếu thư viện bị bỏ lỡ không được tham chiếu đến chương trình của bạn, mà là bởi các thư viện mà bạn tham khảo? –