루트 권한 없이 Linux 시스템에 Zsh를 설치하려고 합니다. 소스 tarball을 다운로드하고 다음을 실행했습니다.
./configure --prefix=<my_installation_path>
하지만 나는 다음과 같은 결과를 얻습니다.
구성: 오류: "시스템에서 터미널 처리 라이브러리를 찾을 수 없습니다. 이것은curses 또는 ncurses라는 라이브러리일 수 있습니다. 시스템 소프트웨어 패키지에 "curses-devel" 또는 "ncurses-devel"이라는 라이브러리를 설치해야 할 수도 있습니다. "
ncurses를 설치합니다:
저는 이 시스템의 루트가 아니기 때문에 ncurses
수동으로 다운로드하여 설치했는데(github.com도 사용 ./configure --prefix=<my_installation_path>
) 잘 진행되는 것 같았습니다.
그런 다음 다음 경로를 업데이트했습니다.
INSTALLATION_PATH='/path/to/installation'
export PATH=$INSTALLATION_PATH/bin/:$PATH
export LD_LIBRARY_PATH=$INSTALLATION_PATH/lib:$LD_LIBRARY_PATH
export CFLAGS=-I$INSTALLATION_PATH/include
그리고 Zsh를 다시 설치하려고 시도했지만 동일한 ncurses
오류가 발생했습니다. 내가 아는 한 위의 경로 변수는 올바른 위치를 가리키고 있으며 이를 쉘에서 확인할 수 있습니다. Zsh가 인식되지 않는 이유는 무엇입니까?ncurses?
답변1
최소한 한 가지가 누락된 것 같습니다. 을 전달하고 있는데 CFLAGS=-I/path/to/installation/include
, 이를 통해 컴파일 스크립트가 헤더 파일을 찾을 수 있지만 컴파일 스크립트가 ( )에 대해 링크할 라이브러리를 찾도록 해야 합니다 libncurses.a
. 설치 지침 CPPFLAGS
에는 CFLAGS
.
export CPPFLAGS="-I$INSTALLATION_PATH/include" LDFLAGS="-L$INSTALLATION_PATH/lib"
전체 오류 메시지를 읽고 ./configure
더 많은 정보가 포함된 로그를 확인하세요(실행된 명령 및 해당 출력에 대한 자세한 기록이 있음 config.log
).configure
답변2
고쳐 쓰다:
Giles의 답변에 따라 업데이트했는데 CPPFLAGS
그 LDFLAGS
동안 문제가 사라졌습니다 configure
.
그러나 이제 다음 프로세스 중에 오류가 발생합니다 make
.
<INSTALLATION_PATH>/lib/libncurses.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
나는 또한 recompile with -fPIC
. 어떻게 해야 하나요?ncurses
ncurses
업데이트 2:
나는 그것을 다시 다시 컴파일했다 ncurses
. 이번에는 다음을 수행했습니다.
export CXXFLAGS=" -fPIC"
export CFLAGS=" -fPIC"
앞에 가 있고 다음 에 make
추가됩니다 . 이것으로 문제가 해결된 것 같습니다!--enable-shared
./configure
ncurses
Zsh