今天在另外一台电脑上面使用 rt-thread 的 env 工具,scons --menuconfig 出现错误,提示如下:
scons: Reading SConscript files ...scons: Entering directory `/home/ptz/workspace/rt-thread/rt-thread/tools/kconfig-frontends'scons: Reading SConscript files ...scons: done reading SConscript files.scons: Building targets ...gcc -o kconfig-mconf libs/lxdialog/checklist.o libs/lxdialog/inputbox.o libs/lxdialog/menubox.o libs/lxdialog/textbox.o libs/lxdialog/util.o libs/lxdialog/yesno.o libs/parser/yconf.o frontends/mconf/mconf.o -lncurses/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: libs/lxdialog/util.o: undefined reference to symbol 'nodelay'/lib64/libtinfo.so.6: error adding symbols: DSO missing from command linecollect2: error: ld returned 1 exit statusscons: *** [kconfig-mconf] Error 1scons: building terminated because of errors.sh: /home/ptz/workspace/rt-thread/rt-thread/tools/kconfig-frontends/kconfig-mconf: No such file or directory
初步判断是找不到 nodelay 这个函数,于是使用 nm -D /lib/libncurses.so.6 |grep -w nodelay, 结果发现果然没有 nodelay。然后测试了可以用的电脑,可以用的电脑上面 ncurses 这个动态库是有 nodelay 的,于是查看两台电脑 ncurses 的 USE 区别,结果发现,不能用的 ncurses 开启了 tinfo 这个 USE。然后 nm -D /lib/libtinfo.so.6 |grep -w nodelay,这下果然有了。
所有只需要修改 rt-thread/tools/kconfig-frontends/SConstruct, 把 tinfo 加入库路径即可正常工作了。
posted on 2018-12-16 22:15 阅读( ...) 评论( ...)