누락된 C 코드를 찾는 방법

누락된 C 코드를 찾는 방법

나는 문서가 거의 없고 소스 코드가 아직 사용 가능한지 전혀 모르는 레거시 개발 시스템을 물려받았습니다.

이제 일부 소스 코드를 찾고 실제로 시스템의 일부를 구축할 수 있습니다.

나머지 소스 코드를 찾을 수 있는지, 그리고 locate *.c파일을 수동으로 검사하는 것보다 더 좋은 방법이 있는지 궁금했습니다(이것이 제가 파일의 일부를 찾은 방법입니다).

3개의 머신이 있는데, 소스 코드를 찾은 것 중 하나만이 개발 머신인 것 같습니다. 또한 .deb프로젝트의 패키지 버전으로 보이는 61개의 아카이브가 있지만 아카이브를 살펴보면 .deb소스 코드가 아카이브에 없거나 적어도 내가 본 곳에는 없습니다.

전체 드라이브에서 소스 코드를 "스캔"하는 좋은 방법이 있습니까?

답변1

이것은 일반적인 질문에 대한 답변은 아니지만 특정 경우에는 시스템에 패키지가 있으므로 해당 소스 코드를 찾아볼 가치가 있습니다.

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

이는 데비안 패키지 구축 도구가 예상하는 방식으로 명명된 소스 아카이브와 소스 패키지 제어 파일을 찾습니다. 이러한 파일을 찾으면 해당 파일 옆을 보거나 .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

관련 정보