加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux内核makefile cscope目标

发布时间:2020-12-14 01:06:56 所属栏目:Linux 来源:网络整理
导读:当我通过发出make cscope生成 Linux内核cscope数据库时,我获得了数据库文件以及具有相对路径的文件列表.这对我来说是一个问题,因为稍后当我在vim编辑器中从任何目录附加外部内核的数据库但内核我可以轻松搜索特定符号但是我无法打开包含该符号的文件. 我写了
当我通过发出make cscope生成 Linux内核cscope数据库时,我获得了数据库文件以及具有相对路径的文件列表.这对我来说是一个问题,因为稍后当我在vim编辑器中从任何目录附加外部内核的数据库但内核我可以轻松搜索特定符号但是我无法打开包含该符号的文件.

我写了下一个bash脚本

#!/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架构),然后手动成功构建cscope数据库.但我认为必须有一些更简单的方法来实现这一目标.也许一些Makefile的目标就像make cscope_abs或make cscope_ext,我还没有找到.

有什么建议?

解决方法

从cscope手册页 here:

-P path
Prepend path to relative file names in a pre-built cross-reference file so you do not have to change to the directory where the
cross-reference file was built. This option is only valid with the -d
option.

所以我想顶级内核目录中的以下命令应该可以解决这个问题(抱歉没有linux机器方便):

cscope -d -P `pwd`

我2美分,

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读