DrawingProcess
드프 DrawingProcess
DrawingProcess
전체 방문자
오늘
어제
«   2025/05   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
  • 분류 전체보기 (964)
    • Profile & Branding (22)
      • Career (15)
    • IT Trends (254)
      • Conference, Faire (Experien.. (31)
      • News (187)
      • Youtube (19)
      • TED (8)
      • Web Page (2)
      • IT: Etc... (6)
    • Contents (97)
      • Book (66)
      • Lecture (31)
    • Project Process (94)
      • Ideation (0)
      • Study Report (34)
      • Challenge & Award (22)
      • 1Day1Process (5)
      • Making (5)
      • KRC-FTC (Team TC(5031, 5048.. (10)
      • GCP (GlobalCitizenProject) (15)
    • Study: ComputerScience(CS) (72)
      • CS: Basic (9)
      • CS: Database(SQL) (5)
      • CS: Network (14)
      • CS: OperatingSystem (3)
      • CS: Linux (39)
      • CS: Etc... (2)
    • Study: Software(SW) (95)
      • SW: Language (29)
      • SW: Algorithms (1)
      • SW: DataStructure & DesignP.. (1)
      • SW: Opensource (15)
      • SW: Error Bug Fix (43)
      • SW: Etc... (6)
    • Study: Artificial Intellige.. (149)
      • AI: Research (1)
      • AI: 2D Vision(Det, Seg, Tra.. (35)
      • AI: 3D Vision (70)
      • AI: MultiModal (3)
      • AI: SLAM (0)
      • AI: Light Weight(LW) (3)
      • AI: Data Pipeline (7)
      • AI: Machine Learning(ML) (1)
    • Study: Robotics(Robot) (33)
      • Robot: ROS(Robot Operating .. (9)
      • Robot: Positioning (8)
      • Robot: Planning & Control (7)
    • Study: DeveloperTools(DevTo.. (83)
      • DevTool: Git (12)
      • DevTool: CMake (13)
      • DevTool: NoSQL(Elastic, Mon.. (25)
      • DevTool: Container (17)
      • DevTool: IDE (11)
      • DevTool: CloudComputing (4)
    • 인생을 살면서 (64)
      • 나의 취미들 (7)
      • 나의 생각들 (42)
      • 여행을 떠나자~ (10)
      • 분기별 회고 (5)

개발자 명언

“ 매주 목요일마다 당신이 항상 하던대로 신발끈을 묶으면 신발이 폭발한다고 생각해보라.
컴퓨터를 사용할 때는 이런 일이 항상 일어나는데도 아무도 불평할 생각을 안 한다. ”

- Jef Raskin

맥의 아버지 - 애플컴퓨터의 매킨토시 프로젝트를 주도

인기 글

최근 글

최근 댓글

티스토리

hELLO · Designed By 정상우.
DrawingProcess

드프 DrawingProcess

[Linux] Executable and Linkable Format(ELF): 실행 및 링킹 파일 포맷 (feat. readelf)
Study: ComputerScience(CS)/CS: Linux

[Linux] Executable and Linkable Format(ELF): 실행 및 링킹 파일 포맷 (feat. readelf)

2022. 8. 23. 09:27
반응형

Executable and Linking Format(ELF)

UNIX / LINUX 기반에서 사용되는 실행 및 링킹 파일 포맷을 ELF라 하며, 하나의 ELF Header와 파일데이터로 구성됩니다. 

출처: wilkipedia

  • ELF header
    : ELF 파일의 Metadata를 가진 Header
  • Segment
    : 동일한 메모리 속성(read-only, writable, ...)을 가진 하나 또는 그 이상의 섹션의 집합
  • Section
    : 특정 정보(machine instructions, symbol table, ..)를 포함하고 있는 ELF file의 작은 조각
  • Symbol
    : ELF file내에 저장된 함수 또는 변수의 디스크립션입니다. 간단한 함수 또는 변수의 정보를 포함하고 있습니다.
  • Object file
    : 컴퓨터에서 읽을 수 있는 소스파일 버전입니다. Object file은 소스파일의 전역, 정적 변수 이름같은 심볼 정보들이 아직 남아있는 파일입니다. 하지만 이 파일은 메모리에 어떻게 로드되어야 하는지 정보가 명시되어 있지 않기 때문에 직접 실행은 불가능합니다.
  • Shared Library
    : 하나 또는 그 이상의 Object 파일의 심볼들로 구성된 파일입니다. 주소 공간 어디에든 로드 되어질 수 있습니다.
  • Executables
    : Shared Library와 매우 유사하지만 메모리 내 특정 주소에 로드될 수 있는 파일입니다. 프로그램 시작을 위한 함수를 가지고 있습니다. 해당 함수에서 Executables 파일은 시작됩니다.
  • Core Files
    : ELF 의 특별한 타입의 파일입니다. 실행된 프로세스에 의해 사용된 여러 메모리 세그먼트 들을 포함한 메모리 이미지 정보를 가지고 있습니다. 
  • Linking
    : object 파일들로 부터 심볼 정도들을 가져와 특정 순서에 맞게 정렬을 해주는 과정입니다. 오브젝트의 각 섹션들을 공유 라이브러리나 실행파일 내에 각 세그먼트내에 정렬해 주는 과정입니다. 

 

ELF 파일 확인 방법(readelf)

readelf : ELF 파일 정보를 확인 할수 있는 도구

  • 해더 정보 조회
    • readelf -f ( 파일 해더 조회)
    • readelf -l (프로그램 해더 조회)
    • readelf -S (섹션 해더 조회)
    • readelf -e (전체 해더 조회)
  • elf 정보 조회
    • readelf -s (심볼 테이블 조회)
    • readelf -r (재배치 정보 조회)
    • readelf -d (동적 세그먼트 조회)
    • readelf -a (elf의 모든 정보 조회)

 

참고

  • [Wikipedia] Executable and Linkable Format: https://en.wikipedia.org/wiki/Executable_and_Linkable_Format
  • [ELF] ELF Header: https://sonseungha.tistory.com/460
  • [Linux] readelf 사용법: https://zeromini0.tistory.com/entry/Linux-readelf-%EC%82%AC%EC%9A%A9%EB%B2%95 
반응형
저작자표시 비영리 변경금지 (새창열림)

'Study: ComputerScience(CS) > CS: Linux' 카테고리의 다른 글

[Linux] NTP 서버 시간 동기화  (0) 2022.09.28
[Linux] C++ 컴파일러에 대하여 (feat. clang/LLVM, clang-format, clang-tidy)  (0) 2022.08.29
[Linux] 일정 시간마다 작업 실행시키기(crontab)  (0) 2022.08.12
[Linux] ln 명령어(feat. 리눅스 파일 링킹): 하드링크(Hard Link) VS 심볼릭링크(Symbolic Link)  (0) 2022.08.09
[Linux] Graceful Shutdown이란? (feat. SIGINT/SIGTERM/SIGKILL + signal handler)  (0) 2022.08.05
    'Study: ComputerScience(CS)/CS: Linux' 카테고리의 다른 글
    • [Linux] NTP 서버 시간 동기화
    • [Linux] C++ 컴파일러에 대하여 (feat. clang/LLVM, clang-format, clang-tidy)
    • [Linux] 일정 시간마다 작업 실행시키기(crontab)
    • [Linux] ln 명령어(feat. 리눅스 파일 링킹): 하드링크(Hard Link) VS 심볼릭링크(Symbolic Link)
    DrawingProcess
    DrawingProcess
    과정을 그리자!

    티스토리툴바