首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux内核makefile cscope目标

Linux内核makefile cscope目标
EN

Stack Overflow用户
提问于 2014-04-08 13:16:49
回答 4查看 3.7K关注 0票数 6

当我通过发出make cscope来生成Linux数据库时,我会得到数据库文件以及带有相对路径的文件列表。这对我来说是个问题,因为稍后当我将外部内核的数据库附加到vim编辑器中的任何目录(内核目录除外)时,我可以轻松地搜索特定的符号,但是不能打开包含该符号的文件。

我写了下一个bash脚本

代码语言:javascript
复制
#!/bin/bash

SNAME="$0"
SNAME=${SNAME##*/}

function usage()
{
    echo Generate Linux kernel cscope database
    echo "Usage: $SNAME [PATH]"
    echo -n "You must provide this script with an ABSOLUTE path of your "
    echo "kernel's root directory"
}

if [[ -z "$1" ]]; then
    usage
    exit -1
fi

KDIR="$1"

echo -n "Collecting a list of files... "
if find "$KDIR" -path "${KDIR}/arch/*" ! -path "${KDIR}/arch/x86*" -prune -o \
        -path "${KDIR}/include/asm-*" \
        ! -path "${KDIR}/include/asm-generic*" \
        ! -path "${KDIR}/include/asm-x86*" -prune -o \
        -path "${KDIR}/tmp*" -prune -o \
        -path "${KDIR}/Documentation*" -prune -o \
        -path "${KDIR}/scripts*" -prune -o \
        -name "*.[chxsS]" -print > cscope.files; then
    echo done
else
    echo failed
fi

echo -n "Building cscope database... "
cscope -k -qb && echo done || echo failed

它使用绝对路径收集我需要的所有文件(x86/x86_64体系结构),然后我成功地手工构建了数据库。但我认为这肯定是更容易实现这一点的方法。也许是一些Makefile的目标,如make cscope_absmake cscope_ext,我还没有找到。

有什么建议吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-05-17 08:55:32

来自cscope手册这里

-P path Prepend路径到预构建的交叉引用文件中的相对文件名,因此您不必更改到生成交叉引用文件的目录。此选项仅对-d选项有效。

因此,我认为来自顶层内核目录的以下命令应该可以完成这个任务(对不起,这里没有linux机器可用):

代码语言:javascript
复制
cscope -d -P `pwd`

我的2美分,

票数 2
EN

Stack Overflow用户

发布于 2015-04-13 11:42:46

首先,创建特定于特定体系结构的cscope数据库比较简单,如下所示:在Linux内核的顶部文件夹中运行

代码语言:javascript
复制
ARCH=x86 make cscope

这将创建具有相对路径的cscope。现在,您可以要求vim以两种方式之一解释相对于cscope.out文件位置的路径:

方法1 :使用cscoperelative:help csre的输出:

代码语言:javascript
复制
If 'cscoperelative' is set, then in absence of a prefix given to cscope
(prefix is the argument of -P option of cscope), basename of cscope.out
location (usually the project root directory) will be used as the prefix
to construct an absolute path.  The default is off.  Note: This option is
only effective when cscope (cscopeprg) is initialized without a prefix
path (-P).  Examples: >
    :set csre
    :set nocsre

Way 2 : (来自Aaron在问题中的回答)在vim中添加cscope数据库时,指定基本位置。示例:

代码语言:javascript
复制
:cs add <base_location>/cscope.out <base_location>/

在vim的cscope帮助页面中添加:

代码语言:javascript
复制
USAGE   :cs add {file|dir} [pre-path] [flags]

    [pre-path] is the pathname used with the -P command to cscope.
票数 5
EN

Stack Overflow用户

发布于 2014-11-05 18:13:41

代码语言:javascript
复制
make cscope

或者针对你的具体情况-

代码语言:javascript
复制
ARCH=x86 make cscope
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22938266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档