V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
g0t3n
V2EX  ›  Linux

大家有木有看 linux 源码的经验捏

  •  
  •   g0t3n · 2014-09-11 22:54:19 +08:00 · 7688 次点击
    这是一个创建于 3732 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我的原意是看 linux 内核的源码(好吧不能说看但是怎么说也应该虐待下自己撒) 还原到最初的需求其实就是肿么好好的看一个[linux]项目的代码,大家有经验么
    本来我是个 vim 死忠。但是突然发觉当上升到一个项目,各种交叉引用的时候就不是编辑器能满足我的需求了,一个 IDE 还是很必要的(想当初还是死死的鄙视俺 boss 用 IDE ),我现在是 vim+cscope+ctags 感觉还是不够快感。
    我简单的需求是
    * 特别是快速定位到某个文件 手工 ack/grep 出相关文件 # 这点直接 ack 就能做到了,但是能嵌入到 IDE 中还是很不错的
    * 鼠标指这能看到 函数 / 变量 的 定义/声明 能做好索引 # 这点我在见识过 vs 后我突然发觉我好落后
    * 高亮代码
    * 带逻辑的框框提示 # 介个的意思是 比如一个逻辑判断 if 代码块有一个小的连线连着

    拜托各位牛了
    22 条回复    2014-09-14 20:28:04 +08:00
    jybox
        1
    jybox  
       2014-09-11 23:48:00 +08:00
    听说 JB 新出了个 CLion
    jedihy
        2
    jedihy  
       2014-09-12 02:32:11 +08:00 via iPhone
    sbt2/3 +ctags插件,我用这个看内核源码的。仅次于win source insight
    initialdp
        4
    initialdp  
       2014-09-12 08:22:40 +08:00   ❤️ 1
    source insight吧。这么多年过去了,我还没见过比SI更强的看(编辑)C/C++代码的工具。
    leyle
        5
    leyle  
       2014-09-12 08:27:58 +08:00
    你说的这些需求,vim和它的插件都可以很好的完成,死忠就更要深入了解啊。
    happywowwow
        6
    happywowwow  
       2014-09-12 08:28:52 +08:00
    si是重量级工具 什么功能都有
    st是轻量级工具 界面风格简洁
    两个都在用
    helloworld00
        7
    helloworld00  
       2014-09-12 08:29:12 +08:00
    书和源代码一起看效果好一些

    推荐这本The Linux Kernel Primer
    http://book.douban.com/subject/1906552/
    zhangdawei
        8
    zhangdawei  
       2014-09-12 08:43:30 +08:00
    source insight很好用
    有一个可能的问题是,linux支持文件名大小写区别,windows不支持,
    farseer2014
        9
    farseer2014  
       2014-09-12 09:05:23 +08:00
    我用vim+gtags+unite.vim+unite-gtags。
    wizardoz
        10
    wizardoz  
       2014-09-12 09:20:17 +08:00
    @initialdp source insight 最大的缺陷,不能支持utf8编码。这个直接导致我不能用sourceinsight
    jsfaint
        11
    jsfaint  
       2014-09-12 09:25:05 +08:00
    kernel的源码需要和啥项目交叉么?
    如果是单纯的kernel, vim + gnu global 足矣(再广告一下俺的插件https://github.com/jsfaint/gen_tags.vim)
    如果需要项目交叉,引用其他的库之类的,用ctags可以,但是略慢
    也可以把youcompleteme配起来用,很不错
    Limy
        12
    Limy  
       2014-09-12 11:31:11 +08:00
    试一下 Linux Cross Reference
    http://lxr.free-electrons.com
    下面这个国内的有代码高亮,不过没有紧跟内核版本更新
    http://lxr.oss.org.cn
    xiaket
        13
    xiaket  
       2014-09-12 11:37:41 +08:00   ❤️ 1
    @zhangdawei 离题说下, 这个貌似是文件系统而不是操作系统级的问题.
    myrual
        14
    myrual  
       2014-09-12 11:52:44 +08:00
    source insight应该是最合适的。
    nicai000
        15
    nicai000  
       2014-09-12 12:13:36 +08:00
    每天看, 不过内核的源码用了很多结构体指针(用C实现初级的面向对象), 然后指来指去, 用啥IDE都追踪不到啊...

    我自己就是Vim + ctags + cscope, 偶尔用用lxr
    zhangdawei
        16
    zhangdawei  
       2014-09-12 13:11:54 +08:00
    @xiaket 是文件系统的问题,不过windows下好像没太好办法,所以我开了个samba
    soundbbg
        17
    soundbbg  
       2014-09-12 14:02:50 +08:00
    看过,不过最好和书一起看,边看书边看源码,会比较有效率。当然linux源码是很庞大的工程,需要时间。看到最后你就会发现计算机也不过就是这样了。
    hualuogeng
        18
    hualuogeng  
       2014-09-12 14:54:13 +08:00
    @laputaprince
    ack.vim Ack can be used as a replacement for 99% of the uses of grep.
    ag.vim Ag can be used as a replacement for 153% of the uses of ack.
    Zuckonit
        19
    Zuckonit  
       2014-09-12 17:19:38 +08:00
    ag.vim
    Youcompleteme
    g0t3n
        20
    g0t3n  
    OP
       2014-09-13 13:01:29 +08:00
    @all 昨天去了忙了木上网,没想到这么多回复,好感动
    ps:lxr 其实还是真的不错的,另外

    @jsfaint 我就看 kernel 而且是按兴趣抽出一小部分来看。另外我等下去看看你的插件哈~ [点个赞]
    @leyle 我确实是 vim 的死忠所以决定继续发掘

    @Limy thx 我一直是用国外的一个 lxr 速度有点慢,你贴出来的那个颜色看起还是很赞
    g0t3n
        21
    g0t3n  
    OP
       2014-09-13 13:18:38 +08:00
    @happywowwow st 是指 sublime Text?
    happywowwow
        22
    happywowwow  
       2014-09-14 20:28:04 +08:00
    @g0t3n 是的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2617 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:42 · PVG 23:42 · LAX 07:42 · JFK 10:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.