Tôi đang cài đặt một chương trình trên máy chủ với tư cách là người dùng không root. Cụ thể đó là tmux 1.5, nhưng theo tôi thì nên áp dụng rộng rãi cho tất cả các chương trình được cài đặt cục bộ (tôi đề cập đến tên chương trình trong trường hợp vấn đề này kết thúc không phải là lỗi của tôi).
Chương trình yêu cầu tôi cài đặt một số thư viện phụ thuộc (ví dụ: libevent và ncurses). Vì vậy, tôi đã cài đặt cả hai cục bộ vì tôi không có quyền truy cập root
cd $HOME/library/installation/folder
DIR=$HOME/local
./configure --prefix=$DIR
#... make ... make install
Bây giờ, để cài đặt chương trình, tôi cũng phải bao gồm các gói thư viện:
cd $HOME/program/installation/folder
./configure --prefix=$DIR CFLAGS="-I$DIR/include" LDFLAGS="-L$DIR/lib"
#... make ... make install
Ok, vì vậy, điều này sẽ cài đặt chương trình mà không gặp vấn đề gì với $ HOME / local / bin, nhưng nếu tôi chạy tệp thực thi: $ HOME / local / bin / tmux, tôi gặp lỗi sau:
tmux: lỗi trong khi tải thư viện dùng chung: libevent-2.0.so.5: không thể mở tệp đối tượng dùng chung: Không có tệp hoặc thư mục như vậy
Dường như với tôi rằng chương trình không thể tìm thấy các thư viện mong muốn, nhưng tệp libevent-2.0.so.5 thực sự tồn tại trong $ HOME / local / lib như được chỉ định trong các tùy chọn cấu hình. Tôi tự hỏi làm thế nào tôi có thể khiến chương trình nhận ra thư viện đã cài đặt để chạy. Tôi đã thử đặt các liên kết tượng trưng trong $ HOME / lib, $ HOME / bin và $ HOME / local / bin, nhưng không có liên kết nào trong số này hoạt động. Bất kỳ ý tưởng và đề xuất sẽ được đánh giá rất cao
-R $DIR/lib
đểCFLAGS
là trong khi xây dựngtmux
(và khônglibevent
). Điều này không giúp tôi - có một số lỗi cuối cùng từ gcc nói rằng nó không thể nhận ra-R
(ngoài ra , tôi đã thử mà không có khoảng cách giữa-R
và$DIR
). ./có hình --disable-shared Điều này hoạt động, cập nhậtLD_LIBRARY_PATH
cũng hoạt động. Tôi đã kết thúc việc làmlibevent
lại với--disable-shared
tùy chọn trên .