![nas 上的 psybnc:ncurses 问题](https://linux22.com/image/538771/nas%20%E4%B8%8A%E7%9A%84%20psybnc%EF%BC%9Ancurses%20%E9%97%AE%E9%A2%98.png)
尝试在 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) 行更加详细。