리눅스 명령어 · 3 min read · Sep 14, 2025

리눅스 nm 명령어 튜토리얼 초보자를 위한 가이드 (10가지 예제)

리눅스 사용자이면서 코딩 및 시스템 수준 소프트웨어 개발에 관심이 있다면, 객체 파일의 기호와 관련된 정보를 필요로 하는 상황에 처할 수 있습니다. 이러한 상황에서 사용할 수 있는 명령줄 유틸리티인 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이 정의된 기호만 표시하도록 하려면 –defined-only 명령줄 옵션을 사용하십시오.

nm --defined-only [obj-file]

예를 들어:

nm --defined-only apl

결론

동의합니다, nm 명령어는 특정 청중을 가지고 있지만, 개인적인 경험으로는 자신이 그 청중의 일원이라고 생각하지 않더라도 이러한 도구가 존재한다는 것을 기억해 두는 것이 좋습니다. 그리고 이 유틸리티를 사용하고자 하는 분들은 여기의 모든 예제를 연습한 후, nm 매뉴얼 페이지를 방문하여 더 많은 정보를 알아보시기 바랍니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.