在没有管理员权限的情况下构建 zsh:找不到终端处理库

在没有管理员权限的情况下构建 zsh:找不到终端处理库

我正在尝试在 Linux 机器上安装没有 root 权限的 Zsh。我下载了源 tarball 并运行:

./configure --prefix=<my_installation_path>

但后来我得到:

配置:错误:“在您的系统上找不到终端处理库。这可能是一个名为curses或ncurses的库。您可能需要在系统上安装一个名为“curses-devel”或“ncurses-devel”的软件包”

安装 ncurses:

由于我不是这个系统的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

并尝试再次安装 Zsh,但出现相同的ncurses错误。据我所知,上面的路径变量指向正确的位置,我可以在 shell 上检查这一点。为什么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

更新:

按照吉尔斯的回答,我进行了更新CPPFLAGSLDFLAGS并且问题在 期间消失了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./configurencursesZsh这似乎已经解决了问题!

相关内容