ctags: Unknown option: --kinds-c
在本地搭建 Bootlin elixir 查阅内核代码的时候,每当执行到 python3 update.py 这一步骤的时候,终端上总会报“ctags: Unknown option: --kinds-c”这个warning,执行完成以后在浏览器打开bootlin的页面,会发现ident功能不能用(无法在网页上直接点击函数名/变量名去查看函数/变量的定义和调用)。
搭建本地bootlin elixxir的方法可以参考一下两个链接:
https://barryx.cn/build_bootlin_elixir/
https://github.com/bootlin/elixir
根据搭建的步骤,明明已经安装了特殊版本的ctags(universal-ctags_0+git20200526-0ubuntu1_amd64.deb),为啥还是不行呢?
查看elixir/script.sh,发现使用的命令就是ctags 。
执行 dpkg -X universal-ctags_0+git20200526-0ubuntu1_amd64.deb ./ 把deb包解压缩,发现它的usr/bin/目录下有ctags-universal、readtags两个可执行程序。
# which ctags
/usr/bin/ctags
# ls -l /usr/bin/ctags lrwxrwxrwx 1 root root 23 12月 18 2021 /usr/bin/ctags -> /etc/alternatives/ctags
# ls -l /etc/alternatives/ctags lrwxrwxrwx 1 root root 24 12月 16 14:26 /etc/alternatives/ctags -> /usr/bin/ctags-exuberant
是不是发现点什么了?是的,系统里原先安装有ctags,特殊版本的ctags虽然安装了但是并没有使用到。
那就重定向/etc/alternatives/ctags到/usr/bin/ctags-universal呗。
先 rm /etc/alternatives/ctags 删除,再 ln -s /usr/bin/ctags-universal /etc/alternatives/ctags 重新生成。
这样,再调用ctags的时候,由于 /usr/bin/ctags -> /etc/alternatives/ctags -> /usr/bin/ctags-universal,调用的就是特殊版本的ctags(/usr/bin/ctags-universal)了。
这时再执行python3 update.py,就不会再报“ctags: Unknown option: --kinds-c”的warning了。索引生成完成以后,ident功能也可以正常使用了。
本文来自博客园,作者:闹闹爸爸,转载请注明原文链接:https://www.cnblogs.com/wanglouxiaozi/p/16987386.html