tôi thành công có thể liên kết chống lại libawesomium-1.6.5.so
:Liên kết chống lại Thư viện chia sẻ, kêu gọi chương trình mà không cần LD_LIBRARY_PATH tùy chỉnh
-L-L.
-L-lawesomium-1.6.5
-L-ldl
libawesomium-1.6.5.so
là trong cùng thư mục như thực thi của tôi, bây giờ nếu tôi cố gắng gọi cho chương trình của tôi (tôi sẽ gọi nó ăn xin cho bây giờ), nó tồn tại với:
./prog: error while loading shared libraries: libawesomium-1.6.5.so.0: cannot open shared object file: No such file or directory
vì vậy, tôi thực hiện một liên kết tượng trưng libawesomium-1.6.5.so.0
trỏ đến libawesomium-1.6.5.so
, chạy prog
một lần nữa mang lại cho tôi những lỗi tương tự, gọi nó với một tùy chỉnh LD_LIBRARY_PATH=./
hoạt động, nhưng tôi muốn phân phối prog
và tôi muốn người dùng có thể sử dụng prog
với quyền root (cài đặt awesomium thành /usr/lib
v.v.) và không cần thiết lập LD_LIBRARY_PATH
. Một tùy chọn sẽ là một kịch bản lệnh shell đặt LD_LIBRARY_PATH
, nhưng tôi thích một cách khác (tôi cũng nghe thấy thiết lập LD_LIBRARY_PATH
là một ý tưởng tồi).
Hơn nữa, sẽ rất tuyệt nếu không cần phải tạo liên kết tượng trưng đến libawesomium-1.6.5.so.0
.
EDIT:
Đi qua -rpath=.
đến các công trình liên kết! Nhưng awesomium tiếc là không thể đối phó với nó:
/.../awesomium_test/AwesomiumProcess: error while loading shared libraries: libawesomium-1.6.5.so.0: cannot open shared object file: No such file or directory
Sử dụng -rpath và thiết lập LD_LIBRARY_PATH từ bên trong prog làm việc
Chà hoạt động này, cảm ơn! Cũng không hoàn toàn, xem chỉnh sửa của tôi. – dav1d
Tôi đã tìm ra! Tôi có thể đặt 'LD_LIBRARY_PATH' trước khi tải awesomium bên trong chương trình của tôi. – dav1d
Bạn nên chuyển '-Wl, -rpath = '$ ORIGIN'' thay vì' -Wl, -rpath = .' và LI_LIBRARY_PATH sẽ là vô dụng. – Julien