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 링크 변경

-ltinfo3.2.58 커널의 경우 줄 끝에 추가되므로 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_mconfscript/kconfig/Makefile을 다음과 같이 수정했습니다.

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

내 Centos 6.8 시스템에서 실행 중입니다.

관련 정보