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

おすすめ記事