cscope无法索引代码树之外的软链接

本文详细介绍如何卸载旧版CScope并安装新版的过程,包括解决编译过程中的依赖问题,以及针对软链接进行必要的代码修改。此外还提供了CScope文件索引与查询的基本命令,帮助读者快速上手。

http://blog.youkuaiyun.com/sudolee/article/details/9052291

 

背景:为什么非要使用cscope?不用ctags?

尽管ctags可以索引软链接,但是,ctags不能查找“调用者”,比如:你想看看某个函数在哪些位置被调用了, .etc


1, 卸载cscope

2, 下载cscope源代码:

[html] view plain copy
  1. http://sourceforge.net/projects/cscope/files/cscope/15.8a/  

p.s 我下载的15.8a,在debian sid使用正常

3, 修改如下:

[html] view plain copy
  1. diff --git a/src/dir.c b/src/dir.c  
  2. index cf9330d..e73d86f 100644  
  3. --- a/src/dir.c  
  4. +++ b/src/dir.c  
  5. @@ -651,7 +651,7 @@ accessible_file(char *file)  
  6.      if (access(compath(file), READ) == 0) {  
  7.         struct stat stats;  
  8.    
  9. -       if (lstat(file, &stats) == 0  
  10. +       if (stat(file, &stats) == 0  
  11.             && S_ISREG(stats.st_mode)) {  
  12.             return YES;  
  13.         }  

原因如下: man stat
       stat() stats the file pointed to by path and fills in buf.
       lstat() is identical to stat(), except that if path is a symbolic link, then the link itself is stat-ed, not the file that it refers to.

4, 接下来就是通用的方法:

[html] view plain copy
  1. ./configure  
  2. make -jN  
  3. sudo make install  

5, 试试效果:

[html] view plain copy
  1. find -L . | grep -E '\.c$|\.h$|\.S$|\.cpp$|\.java$|\.lds$|\.ld*|\.chh$|\.cc$' > cscope.files  
  2. cscope -Rbqk  

6, vim....

 

编译过程中可能碰到的问题:

sudo apt-get install libncursesw5-dev

sudo apt-get install libncurses5-dev

sudo apt-get install byacc

sudo apt-get install flex

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值