웹사이트 검색

초보자를 위한 Linux nm 명령 자습서(예제 10개)


이 페이지에서

  1. Linux nm 명령
  2. Q1. nm 명령은 어떻게 작동합니까?\n
  3. Q2. 파일 이름이 출력에서 각 기호 앞에 오는 방법은 무엇입니까?\n
  4. Q3. nm 디스플레이 디버거 기호를 만드는 방법은 무엇입니까?\n
  5. Q4. nm 디코드 저수준 기호 이름을 만드는 방법은 무엇입니까?\n
  6. Q5. nm에서 동적 기호만 표시하는 방법은 무엇입니까?\n
  7. Q6. 다른 nm 출력 형식을 사용하는 방법은 무엇입니까?\n
  8. Q7. nm가 외부 기호만 표시하게 만드는 방법은 무엇입니까?\n
  9. Q8. nm이 제공하는 모든 정렬 옵션은 무엇입니까?\n
  10. Q9. nm이 정의되지 않은 기호만 표시하게 만드는 방법은 무엇입니까?\n
  11. Q10. nm에서 정의된 기호만 표시하는 방법은 무엇입니까?\n
  12. 결론

코딩 및 시스템 수준 소프트웨어 개발에도 관심이 있는 Linux 사용자인 경우 개체 파일의 기호와 관련된 정보가 필요한 상황에 처할 수 있습니다. 이러한 상황에서 사용할 수 있는 명령줄 유틸리티(nm라고 함)가 있다는 사실에 기뻐할 것입니다.

이 자습서에서는 이해하기 쉬운 몇 가지 예를 사용하여 이 도구의 기본 사항에 대해 설명합니다. 하지만 그 전에 여기에 있는 모든 예제가 Ubuntu 22.04 LTS 시스템에서 테스트되었음을 언급할 가치가 있습니다.

리눅스 nm 명령

nm 명령줄 유틸리티는 기본적으로 개체 파일의 기호를 나열합니다. 도구 구문은 다음과 같습니다.

nm [OPTIONS] OBJECT-FILENAME

다음은 명령 매뉴얼 페이지에서 설명하는 방법입니다.

       GNU nm lists the symbols from object files objfile....  If no object
       files are listed as arguments, nm assumes the file a.out.

다음은 nm이 어떻게 작동하는지 더 잘 이해할 수 있는 몇 가지 Q&A 스타일의 예입니다.

Q1. nm 명령은 어떻게 작동합니까?

이 명령의 기본 사용법은 매우 간단합니다. nm 명령을 실행하고 개체 파일의 이름을 입력으로 전달하기만 하면 됩니다. 예를 들어, apl 바이너리 파일과 함께 nm 명령을 사용했습니다.

nm apl

다음 스크린샷은 위 명령이 생성한 출력의 종류를 보여줍니다.

출력에 생성된 세 개의 열은 각각 기호 값, 기호 유형 및 기호 이름을 나타냅니다. 여러 유형의 기호가 있습니다. 자세한 내용을 보려면 nm 명령 매뉴얼 페이지로 이동하십시오.

Q2. 파일 이름이 출력에서 각 기호 앞에 오는 방법은 무엇입니까?

이것은 -A 명령줄 옵션을 사용하여 수행할 수 있습니다.

nm -A [obj-file]

예를 들어:

nm -A apl

따라서 각 줄의 시작 부분에 파일 이름이 추가된 것을 볼 수 있습니다.

Q3. nm 디스플레이 디버거 기호를 만드는 방법은 무엇입니까?

nm 표시 디버거 기호를 출력에 표시하려면 -a 명령줄 옵션을 사용하십시오.

nm -a [obj-filename]

예를 들어:

nm -a apl

위 명령은 일반적으로 나열되지 않는 디버거 전용 기호를 포함하여 모든 기호를 표시합니다.

Q4. nm 디코드 저수준 기호 이름을 만드는 방법은 무엇입니까?

원하는 경우 nm이 하위 수준 기호 이름을 사용자 수준 이름으로 디코딩하도록 강제할 수도 있습니다. 이것은 -C 명령줄 옵션을 사용하여 수행할 수 있습니다.

nm -C [obj-file]

예를 들어:

nm -C apl

이 옵션에 대한 매뉴얼 페이지의 내용은 다음과 같습니다.

           Besides removing any initial underscore prepended by the system,
           this makes C++ function names readable. Different compilers have
           different mangling styles. The optional demangling style argument
           can be used to choose an appropriate demangling style for your
           compiler.

Q5. nm에서 동적 기호만 표시하는 방법은 무엇입니까?

nm이 일반 기호가 아닌 동적 기호만 표시하도록 하려면 -D 명령줄 옵션을 사용하십시오.

nm -D [obj-file]

예를 들어:

nm -D apl

따라서 nm은 출력에서 동적 기호만 생성했음을 알 수 있습니다.

Q6. 다른 nm 출력 형식을 사용하는 방법은 무엇입니까?

다른 출력 형식을 활성화하려면 -f 명령줄 옵션을 사용합니다. 기본적으로 출력은 bsd 형식으로 생성되지만 원하는 경우 sysv 및 posix 형식도 활성화할 수 있습니다.

nm -f [format] [obj-filename]

예를 들어:

nm -f posix apl

지금 형식의 변화를 관찰하십시오.

Q7. nm가 외부 기호만 표시하게 만드는 방법은 무엇입니까?

이것은 -g 명령줄 옵션을 사용하여 달성할 수 있습니다.

nm -g [obj-file]

예를 들어:

nm -g  apl

Q8. nm이 제공하는 모든 정렬 옵션은 무엇입니까?

기본적으로 기호는 알파벳순으로 정렬됩니다. 그러나 원하는 경우 -n 명령줄 옵션을 사용하여 주소별로 숫자로 정렬할 수 있습니다.

nm -n [objfile]

예를 들어:

nm -n apl

이제 출력이 주소별로 정렬된 것을 볼 수 있습니다.

nm이 어떤 종류의 정렬(사용하는 기본 정렬 포함)도 적용하지 않으려면 -p 명령줄 옵션을 사용하십시오. 계속해서 기존 정렬을 되돌리려면 -r 명령줄 옵션을 사용합니다.

Q9. nm이 정의되지 않은 기호만 표시하게 만드는 방법은 무엇입니까?

이것은 -u 명령줄 옵션을 사용하여 수행할 수 있습니다.

nm -u [obj-file]

예를 들어:

nm -u apl

Q10. nm에서 정의된 기호만 표시하는 방법은 무엇입니까?

nm이 정의된 기호만 표시하게 하려면 --define-only 명령줄 옵션을 사용하십시오.

nm --defined-only [obj-file]

예를 들어:

nm --defined-only apl

결론

동의합니다. nm 명령에는 틈새 청중이 있지만 내 개인적인 경험에 따르면 자신을 해당 청중의 일부로 생각하지 않더라도 그러한 도구가 존재한다는 것을 명심하십시오. 이 유틸리티를 사용하려는 사용자는 여기에서 모든 예제를 연습한 후 nm 매뉴얼 페이지로 이동하여 자세한 내용을 확인하십시오.