nas 上的 psybnc:ncurses 问题

nas 上的 psybnc:ncurses 问题

尝试在 NAS 上编译 psybnc。ipkg 是这里的默认包管理器。我已经安装了 ncurses,它位于 /opt/lib (libncurses.so) 中

[\w] # ls /opt/lib | grep ncurses
libncurses.so
libncurses.so.5
libncurses.so.5.7
libncursesw.so
libncursesw.so.5
libncursesw.so.5.7

[\w] # file libncurses.so.5.7
libncurses.so.5.7: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, stripped

我将此路径添加到 /etc/profile

[\w] # echo $PATH     
/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin:/opt/lib

因此尝试进行 menuconfig 时会出现此错误

[\w] # make menuconfig
Initializing Menu-Configuration
[*] Running Conversion Tool for older psyBNC Data.
Using existent configuration File.
[*] Running Autoconfig.
System: Linux
Socket Libs: Internal.
Environment: Internal.
Time-Headers: in time.h and sys/time.h
Byte order: Big Endian.
IPv6-Support: Yes, general support. But no interface configured.
async-DNS-Support: Yes.
SSL-Support: No openssl found. Get openssl at www.openssl.org
Creating Makefile
[*] Creating Menu, please wait.
This needs the ncurses library. If it is not available, menuconf wont work. If you are using curses, use make menuconfig-curses instead.
make: *** [menuconfig] Error 1

make menuconfig-curses 也一样

[\w] # make menuconfig-curses 
Initializing Menu-Configuration using Curses
[*] Running Conversion Tool for older psyBNC Data.
Using existent configuration File.
[*] Running Autoconfig.
System: Linux
Socket Libs: Internal.
Environment: Internal.
Time-Headers: in time.h and sys/time.h
Byte order: Big Endian.
IPv6-Support: Yes, general support. But no interface configured.
async-DNS-Support: Yes.
SSL-Support: No openssl found. Get openssl at www.openssl.org
Creating Makefile
[*] Creating Menu, please wait.
This needs the curses library. If it is not available, menuconf wont work.
make: *** [menuconfig-curses] Error 1

Psybnc 编译成功,只是想使用 menuconfig 而不是配置文件。

答案1

在朋友的帮助下,我终于知道发生了什么。

首先,如果你想编译任何有依赖项的包,需要在 NAS 上安装 ncurses-dev,你需要这些依赖项的头文件,而 ncurses-dev 包中有这些依赖项

所以

ipkg install ncurses-dev

然后去编辑源目录中的 Makefile 并添加 CFLAGS,如下所示:

CCFLAGS = -I/opt/include -I/opt/include/ncurses

此路径是您需要的头文件的路径,这就是 autoconf 工具找不到它们的原因。但是您需要将 cflags 作为参数放入 gcc,因为 autotools 会忽略覆盖的变量……

所以我只需打开 Makefile 并添加 $(CCFLAGS) 之类的参数,就这样,现在它可以工作了!!

  $(CC) $(CCFLAGS) menuconf/menuconf.c menuconf/inputbox.c menuconf/util.c menuconf/checklist.c menuconf/menubox.c menuconf/textbox.c src/snprintf.c -I. -lncurses -lm -o menuconf/menuconf

答案2

curses 库未安装,由于您没有向我们提供有关 NAS 类型(型号/供应商)的信息,因此我们无法为您提供更详细的帮助。

如果该供应商的 NAS 上有适用于发行版的 curses 包,您可以安装它。

或者您只需使用配置和文本编辑器。

更新

如果你确定你已经正确设置了库,你可以尝试LD_LIBRARY_PATH手动设置为/opt/lib。另外看看并使Makefile相应的 ($CC) 行更加详细。

相关内容