如何定位缺失的 C 代码

如何定位缺失的 C 代码

我继承了一个遗留的开发系统,该系统的文档很少,并且不知道源代码是否仍然可用。

现在我可以找到一些源代码并实际构建系统的一部分。

我想知道是否可以找到其余的源代码,以及是否有比locate *.c手动检查文件更好的方法(这就是我找到部分代码的方法)。

有 3 台机器,只有一台我找到了源代码,似乎是开发机器。它还有 61 个.deb档案,似乎是项目的打包版本,但查看档案后.deb发现源代码不在档案中,或者至少不在我查看的地方。

有没有一种好方法来“扫描”整个驱动器以获取源代码?

答案1

这不会回答您更一般的问题,但在您的具体情况下,由于系统上有软件包,因此值得查找相应的源代码:

find / -name \*.orig.tar\* -o -name \*.dsc

这将查找以 Debian 包构建工具期望的方式命名的源档案,以及源包控制文件。如果您找到这些文件,请在它们旁边查找.debian.tar*.diff.gz归档。所有这些文件组合起来将为您提供源代码和构建规则,以及所有包元数据。

您还可以查找解压的控制文件:

find / -name control

它们通常位于debian包源的子目录中,其中应包含从源重建包所需的所有内容。

答案2

我通常使用脚本组合来处理源文件。正如上面的答案一样,这并不能完全解决您的情况,但搜索符号可以帮助定位源文件。

添加以下内容bashrc

function list-code-files() {
    find -type f \( \
        -name '*.cpp' -o \
        -name '*.java' -o \
        -name '*.php' -o \
        -name '*.[chS]' -o \
        -name 'Makefile' -o \
        -name '*.mk' \
        \) -print0
}

function csym() {
    list-code-files | xargs -0 grep -ne "$1"
}

然后我可以使用 列出源文件list-code-files | xargs -0 echo,或使用 搜索符号csym some-symbol-regexeg

相关内容