我正在尝试在 Linux 机器上安装没有 root 权限的 Zsh。我下载了源 tarball 并运行:
./configure --prefix=<my_installation_path>
Run Code Online (Sandbox Code Playgroud)
但后来我得到:
配置:错误:“在您的系统上找不到终端处理库。这可能是一个名为curses或ncurses的库。您可能需要在系统上安装一个名为“curses-devel”或“ncurses-devel”的软件包”
由于我不是这个系统的root用户,所以我ncurses
手动下载并安装了它(也使用./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
Run Code Online (Sandbox Code Playgroud)
并尝试再次安装 Zsh,但出现相同的ncurses
错误。据我所知,上面的路径变量指向正确的位置,我可以在 shell 上检查这一点。为什么Zsh无法识别ncurses?
按照吉尔斯的回答,我进行了更新CPPFLAGS
,并且LDFLAGS
问题在 期间消失了configure
。
但是,我现在在以下过程中遇到错误make
:
<INSTALLATION_PATH>/lib/libncurses.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我也得到一个recompile with -fPIC
. 我猜这指的是ncurses
. 我认为这意味着我构建ncurses
为静态,我应该将其构建为动态?我该怎么做呢?
我又重新编译了ncurses
一遍。这次,我做了:
export CXXFLAGS=" -fPIC"
export CFLAGS=" -fPIC"
先于,make
然后添加--enable-shared
到./configure
和ncurses
。Zsh
这似乎已经解决了问题!