과학 컴퓨팅 클러스터 노드에서 Tmux를 사용하고 싶지만 어떤 노드에서도 사용할 수 없습니다.환경 모듈나는 볼 수 있다. 그래서 루트 액세스가 필요 없이 소스에서 빌드하기 시작했습니다. .configure
libevent가 필요하므로 내 홈 디렉터리에 libevent 2.1을 성공적으로 다운로드하고 빌드했습니다. 그러나 Tmux의 구성 스크립트에서 libevent를 지정하는 방법을 모르겠습니다. 어떻게 해야 하나요?
참고: 이 질문은 다음과 매우 유사합니다.소스에서 tmux를 빌드할 때 gcc가 libevent를 찾을 수 없는 이유는 무엇입니까?, 하지만 libevent 2.1을 사용하고 있습니다.
답변1
에서 언급했듯이소스에서 tmux를 빌드할 때 gcc가 libevent를 찾을 수 없는 이유는 무엇입니까?, with-libevent=dir
선택의 여지가 없다. 따라서 Tmux를 구성할 때 다음을 수행하십시오.
DIR="$HOME/path/to/libevent"
./configure CFLAGS="-I$DIR/include" LDFLAGS="-L$DIR/.libs"
이는.libs, lib 대신. 나는 이것이 libevent 2.1의 변화라고 생각합니다.
이렇게 하면 구성 확인을 통과하고 컴파일됩니다. 그러나 당신은 아직 숲에서 나오지 않았습니다. 이 작업만 수행하면 다음을 실행하려고 할 때 tmux
다음 오류가 발생합니다 .
error while loading shared libraries: libevent-2.1.so.6: cannot open shared object file: No such file or directory
이 블로그 게시물해결책이 있습니다. 다음과 같이 .libs
경로를 추가하세요.LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/path/to/libevent/.libs
이제 다음에 로그인할 때 "고정"되도록 하려면 위 줄을 파일에 붙여넣으세요 ~/.bashrc
. 터미널에서 명령을 실행하면 해당 세션 동안만 지속됩니다.
답변2
당신은 그것을 사용할 수 있습니다pkg-config
쉽게 해보세요.
먼저, 이 예에서는 다음 위치에 libevent
설치합니다. 이 디렉터리는 수동으로 생성할 필요가 없으며 빌드 프로세스 중에 자동으로 생성됩니다. 다음을 실행하기 위해 루트가 될 필요는 없습니다 .libevent
/tmp/libevent
make install
$ ./autogen.sh
$ ./configure --prefix=/tmp/libevent
$ make
$ make install
이제 다음이 있어야 합니다 /tmp/libevent/lib/pkgconfig/libevent.pc
.
$ cat /tmp/libevent/lib/pkgconfig/libevent.pc
#libevent pkg-config source file
prefix=/tmp/libevent
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: libevent
Description: libevent is an asynchronous notification event loop library
Version: 2.2.0-alpha-dev
Requires:
Conflicts:
Libs: -L${libdir} -levent
Libs.private:
Cflags: -I${includedir}
prefix
인수로 전달한 디렉토리로 설정된다는 점에 유의하세요 ./configure
.
tmux를 빌드하기 전에 다음을 /tmp/libevent/lib/pkgconfig
추가하세요
PKG_CONFIG_PATH
.
$ export PKG_CONFIG_PATH=/tmp/libevent/lib/pkgconfig:$PKG_CONFIG_PATH
$ pkg-config --cflags --libs libevent
-I/tmp/libevent/include -L/tmp/libevent/lib -levent
그런 다음 tmux
정상적으로 빌드하십시오.
$ ./autogen.sh
$ ./configure
$ make
tmux
실제로 사용자 정의를 시작하려면 올바르게 설정 libevent
해야 합니다 .LD_LIBRARY_PATH
$ ldd ./tmux
linux-vdso.so.1 (0x00007ffce3d92000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f2f1d77e000)
libncurses.so.5 => /lib64/libncurses.so.5 (0x00007f2f1d527000)
libevent-2.2.so.1 => not found
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f2f1d30b000)
libc.so.6 => /lib64/libc.so.6 (0x00007f2f1cf42000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f2f1cd3d000)
/lib64/ld-linux-x86-64.so.2 (0x000055cdf0697000)
$ ./tmux
./tmux: error while loading shared libraries: libevent-2.2.so.1: cannot open shared object file: No such file or directory
$ LD_LIBRARY_PATH=/tmp/libevent/lib ./tmux -V
tmux master
편집하다:
설정을 제거하려면 빌드 시 설정할 LD_LIBRARY_PATH
수 있습니다 .rpath
tmux
$ ./configure LDFLAGS="-Wl,-rpath=/tmp/libevent/lib"
$ make
$ ldd ./tmux
linux-vdso.so.1 (0x00007ffcc6de1000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007fbe121a4000)
libncurses.so.5 => /lib64/libncurses.so.5 (0x00007fbe11f4c000)
libevent-2.2.so.1 => /tmp/libevent/lib/libevent-2.2.so.1 (0x00007fbe11cf7000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fbe11adc000)
libc.so.6 => /lib64/libc.so.6 (0x00007fbe11712000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fbe1150e000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fbe112f1000)
/lib64/ld-linux-x86-64.so.2 (0x000055f057ef4000)
$ ./tmux -V
tmux master
답변3
libevent-2.1.so.7을 설치한 후에도 tmux를 실행할 때 비슷한 문제가 발생했습니다. /lib64/ 디렉토리에 설치된 파일의 심볼릭 링크를 생성하는 것이 저에게 효과적이었습니다.
$sudo ln -s /usr/local/lib/libevent-2.1.so.7.0.0 /lib/x86_64-linux-gnu/libevent-2.1.so.7
$ldd tmux
linux-vdso.so.1 (0x00007fff6f9fe000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f675b5eb000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f675b3c1000)
libevent-2.1.so.7 => /lib/x86_64-linux-gnu/libevent-2.1.so.7 (0x00007f675b16b000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f675af50000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f675ab5f000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f675a940000)
/lib64/ld-linux-x86-64.so.2 (0x00007f675ba9f000)