GNU 바이너리 유틸리티
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
GNU 바이너리 유틸리티는 GNU 프로젝트에서 제공하는 바이너리 파일을 다루는 도구 모음이다. 어셈블러, 링커, 프로파일러, 객체 파일 관리 도구 등 다양한 기능을 제공하며, BFD(Binary File Descriptor) 및 libopcodes 라이브러리를 포함한다. 또한, ELF 파일 및 DWARF를 지원하며, 윈도우 관련 도구도 포함하고 있다.
더 읽어볼만한 페이지
- 컴파일러 - 바이너리 재컴파일러
- 컴파일러 - 링커 (컴퓨팅)
링커는 여러 모듈로 된 목적 파일을 결합해 실행 가능한 프로그램을 만들고, 정적/동적 링킹으로 라이브러리를 연결하며, 심볼 해결 및 재배치로 변수와 함수를 메모리 주소에 연결하는 소프트웨어 도구이다. - 자유 컴파일러와 인터프리터 - Tcl
Tcl은 존 오스터하우트가 개발한 명령어 기반의 프로그래밍 언어로, Tk 툴킷과 결합하여 GUI 스크립팅 환경으로 발전했으며, 다양한 운영체제에서 사용 가능하고 C, C++, Java 등 다른 언어와의 인터페이스를 지원한다. - 자유 컴파일러와 인터프리터 - PHP
PHP는 라스무스 러도프가 개발한 범용 스크립팅 언어로, 웹 개발에 널리 사용되며 LAMP 아키텍처의 핵심 요소이다. - GNU 프로젝트 소프트웨어 - GNU 코어 유틸리티
GNU 코어 유틸리티는 유닉스 계열 운영체제에서 파일, 셸, 텍스트 조작을 위한 기본적인 명령어 모음으로, GNU 파일 유틸리티에서 시작하여 3개의 패키지가 통합되어 발전했으며 셸 스크립트 및 시스템 관리에 필수적인 도구를 제공한다. - GNU 프로젝트 소프트웨어 - GNU 허드
GNU 허드는 유닉스 운영 체제를 대체하는 것을 목표로 개발된 GNU 프로젝트의 커널로, 마이크로커널 기반의 서버-클라이언트 아키텍처를 사용하며, 파일 시스템 기능을 확장하는 트랜슬레이터 개념을 제공한다.
| GNU 바이너리 유틸리티 - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 일반 정보 | |
| 이름 | GNU Binutils |
| 개발 | GNU 프로젝트 |
| 최신 릴리스 버전 | 2.42 |
| 최신 릴리스 날짜 | 2024년 1월 29일 |
| 장르 | 프로그래밍 도구 |
| 라이선스 | GNU GPL |
| 웹사이트 | GNU Binutils 공식 웹사이트 |
2. 주요 도구
GNU 바이너리 유틸리티는 컴퓨터 프로그래밍에서 사용되는 다양한 도구 모음을 제공한다. 주요 도구들은 다음과 같다.
| 프로그램 | 설명 |
|---|---|
gprof | 프로파일러 |
dwp | DWARF 패키징 유틸리티 |
elfedit | ELF 파일의 헤더와 프로그램 속성을 편집 |
gprofng | Gprof Next Generation; 성능 데이터를 수집, 분석하기 위한 GPROFNG 도구군의 드라이버 |
울리히 드레퍼(Ulrich Drepper)는 리눅스만을 위해, 그리고 ELF와 DWARF만 지원하며, GNU Binutils를 부분적으로 대체하기 위해 elfutils영어를 작성했다. 그는 프로그래밍 방식으로 접근할 수 있도록 세 개의 라이브러리를 함께 배포했다.[1][2]
2. 1. 어셈블러 및 링커
원래 binutils는 소수의 유틸리티로만 구성되었으나, 이후 관련성이 높아 링커와 어셈블러(2.5 이후)도 포함되었다.
2. 2. 오브젝트 파일 관리 도구
| 도구 | 설명 |
|---|---|
addr2line | 주소를 파일 및 라인으로 변환한다. |
ar | 아카이브를 생성, 수정 및 추출한다. |
c++filt | C++ 심볼의 디맹글링 필터이다. |
nm | 객체 파일에서 내보낸 심볼 목록을 보여준다. |
objcopy | 객체 파일을 복사하고, 변경할 수 있다. |
objdump | 객체 파일에 대한 정보를 덤프한다. |
ranlib | 아카이브용 인덱스를 생성한다. (ar -s와 동일) |
readelf | ELF 파일 내용을 표시한다. |
size | 바이너리 파일의 섹션 크기 및 총 크기를 나열한다. |
strings | 인쇄 가능한 문자열 목록을 보여준다. |
strip | 객체 파일에서 심볼을 제거한다. |
2. 3. 기타 도구
| 도구 | 설명 |
|---|---|
addr2line | 주소를 파일 및 라인으로 변환한다.[1] |
ar | 아카이브를 생성, 수정 및 추출한다.[1] |
c++filt | C++ 심볼 디맹글링 필터이다.[1] |
dlltool | 윈도우 동적 링크 라이브러리를 생성한다.[1] |
gold | ELF 파일용 대체 링커이다.[1] |
nlmconv | 객체 파일을 NetWare Loadable Module로 변환한다.[1] |
nm | 객체 파일에서 내보낸 심볼 목록을 보여준다.[1] |
objcopy | 객체 파일을 복사하고 변경할 수 있다.[1] |
objdump | 객체 파일에 대한 정보를 덤프한다.[1] |
ranlib | 아카이브용 인덱스를 생성한다. (호환성을 위해, ar -s와 동일)[1] |
readelf | ELF 파일 내용을 표시한다.[1] |
size | 바이너리 파일의 섹션 크기 및 총 크기를 나열한다.[1] |
strings | 인쇄 가능한 문자열 목록을 보여준다.[1] |
strip | 객체 파일에서 심볼을 제거한다.[1] |
windmc | 윈도우 메시지 리소스를 생성한다.[1] |
windres | 윈도우 리소스 파일용 컴파일러이다.[1] |
2. 4. 윈도우 관련 도구
| 도구 | 설명 |
|---|---|
dlltool | 윈도우 동적 링크 라이브러리를 만드는 데 사용된다. |
windmc | 윈도우 메시지 리소스를 생성한다. |
windres | 윈도우 리소스 파일용 컴파일러이다. |
개별 binutils 명령은 단순한 기능만을 가지고 있다. 이들을 조합하여 캡슐화한 것으로 BFD와 libopcodes 라이브러리가 있다.
3. 라이브러리
3. 1. BFD (Binary File Descriptor)
개별 binutils 명령은 단순한 기능만을 가지고 있다. 이들을 조합하여 캡슐화한 것으로 BFD 및 libopcodes 라이브러리가 있다.
최초의 BFD 버전은 데이비드 헨켈-월리스(David Henkel-Wallace)와 스티브 체임벌린(Steve Chamberlain)이 작성하였다. 과거에는 켄 레이번(Ken Raeburn)과 이안 랜스 테일러(Ian Lance Taylor)가 유지보수를 담당했다. 2005년 이후에는 닉 클리프턴(Nick Clifton)이 유지보수를 하고 있다.
3. 2. libopcodes
개별 binutils 명령은 단순한 기능만을 가지고 있다. 이들을 조합하여 캡슐화한 것으로 BFD(Binary File Descriptor) 및 libopcodes 라이브러리가 있다.
4. elfutils
리눅스만을 위해, 그리고 ELF와 DWARF만 지원하며, GNU 바이너리 유틸리티를 부분적으로 대체하기 위해 울리히 드레퍼(Ulrich Drepper)는 elfutils를 작성했다. 그는 프로그래밍 방식으로 접근할 수 있도록 세 개의 라이브러리를 함께 배포했다.[1][2]
참조
[1]
홈페이지
elfutils home
https://sourceware.o[...]
[2]
홈페이지
elfutils at Drepper's home
https://www.akkadia.[...]
[3]
서적
独自CPUで学ぶコンピュータの仕組み
2016-03-20
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com