我正在尝试编译 ncmpcpp,当我发出 make 命令时,我收到几个错误,例如:
/home/[myname]/ncmpcpp/src/window.cpp:329: undefined reference to `rl_bind_key'
/home/[myname]/ncmpcpp/src/window.cpp:144: undefined reference to `rl_point'
/home/[myname]/ncmpcpp/src/window.cpp:729: undefined reference to `readline'
等等。问题似乎出在 readline 库和 libreadline-dev 包上,但我已经从官方存储库安装了它,并且我有文件 /usr/include/readline/readline.h,ncmpcpp 将其包含在“window.cpp”中,所以我真的不明白这里发生了什么。
答案1
您是否./autogen.sh
按照手动的?
答案2
Makefile 可能已损坏,似乎无法链接 readline。我通过添加-lreadline
来使其正常工作LDFLAGS
。因此,请执行以下操作:
LDFLAGS
-找到以in开头的行
/home/[myname]/ncmpcpp/Makefile
和
/home/[myname]/ncmpcpp/src/Makefile
以下是我发现的一个:
LDFLAGS = -lboost_filesystem -lboost_system -lboost_locale -lboost_program_options -lboost_regex -lboost_thread -lmpdclient -lpthread -lncursesw -ltinfo -L/usr/lib/x86_64-linux-gnu -lcurl
应位于/ncmpcpp
目录中的第 260 行和中的第 225行附近/ncmpcpp/src
。
然后加
-lreadline
到它,其他库所在的某个地方。我把它放在-lmpdclient
和之间-lpthread
,这样它就变成了
LDFLAGS = -lboost_filesystem -lboost_system -lboost_locale -lboost_program_options -lboost_regex -lboost_thread -lmpdclient -lreadline -lpthread -lncursesw -ltinfo -L/usr/lib/x86_64-linux-gnu -lcurl
之后就只make
需要祈祷最好的结果,如果有效的话,就按照说明继续。
祝你好运!