运行 makeconfig 时未定义对符号“acs_map”的引用

运行 makeconfig 时未定义对符号“acs_map”的引用

当我尝试使用以下命令配置 Linux 内核时,出现链接器错误menuconfig

# make menuconfig
  HOSTLD  scripts/kconfig/mconf
/usr/local/bin/ld: scripts/kconfig/lxdialog/checklist.o: undefined reference to symbol 'acs_map'
/usr/local/bin/ld: note: 'acs_map' is defined in DSO /lib/libtinfo.so.5 so try adding it to the linker command line
/lib/libtinfo.so.5: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make[1]: *** [scripts/kconfig/mconf] Error 1
make: *** [menuconfig] Error 2

知道它有什么问题吗?我正在运行 CentOS 6.2,并且我确信我已经安装了所有需要的库。

答案1

将 binutils 升级到 2.22 后,我遇到了同样的问题。我通过添加以下行解决了这个问题脚本/kconfig/Makefile:

HOSTLOADLIBES_mconf     = -ltinfo

显然,链接器的更改不再包含免费的库;您必须显式链接您的应用程序所需的每个库。请参阅以下内容了解更多信息:DSO 链路更改

对于 3.2.58 内核,将 附加-ltinfo到行尾HOSTLOADLIBES_mconf,因此原来的:

HOSTLOADLIBES_mconf   = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))

会变成:

HOSTLOADLIBES_mconf   = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC)) -ltinfo

答案2

您是否尝试过在 libncurses.so 之间建立符号链接?和 libtinfo.so。?

cd /lib
ln -s /usr/lib/libncurses.so.5 /usr/lib/libtinfo.so.5

libncurses 库名称可能取决于您的版本。

答案3

在 5.XY 及更高版本的内核中,我已将HOSTLDLIBS_mconf脚本/kconfig/Makefile 文件修改为:

HOSTLDLIBS_mconf = $(shell . $(obj)/mconf-cfg && echo $$libs) -ltinfo

在我的 Centos 6.8 机器上运行。

相关内容