728x90

2023/04 160

ld linker (링커)

링킹 과정은 조각난 object 파일들을 하나의 바이너리 이미지로 합치는 과정이다. 이 과정은 결합(merge)과 재배치(relocation)로 이루어 진다. 1. 결합(merge) 여러 ELF 바이너리 포맷으로 구성된 조각난 object 파일들은 최종 바이너리 이미지로 합쳐져 하나의 ELF 실행 파일을 구성한다. ld 명령어에 넣은 인자 순서대로 각 섹션에 들어간다. 2. 재배치(relocation) 단순히 결합 과정에 합쳐진 각 섹션을 실제 코드에 맞도록 조정하는 과정이다. 위의 그림에서 Linking View는 object 파일의 형식이고 Execution View는 linking 후 최종 하나의 실행 파일의 형식을 나타낸다.

Linux 2023.04.18

gcc compiler - 2부 (마지막)

gcc compile의 1부에 이어 3. gcc 사용하여 원하는 컴파일 하기와 4. gcc를 이용한 최적화 컴파일 5. 기타 알아 두면 좋을 만한 것에 대해 설명한다. 3. gcc를 사용해 원하는 컴파일 하기 1) gcc 옵션 적용 규칙 각 옵션은 대부분 그에 상응하는 gcc 내부 변수가 있다. (gcc/options.h) -[f|W|m][옵션]은 설정이고 -[f/W/m]no-[옵션]은 해제이다. 동일 종류의 옵션은 최종 옵션의 값이 적용된다. 그룹 옵션이 존재한다. -f는 flag, -W는 warning, -m은 아키텍처 종속, 기타 나머지들이다. 하나의 옵션이 반드시 하나의 변수만을 바꾸는 것이 아니다. (ex, 그룹옵션) 2) 가장 단순한 컴파일 명령 gcc -W -Wall -O2 -o like l..

Linux 2023.04.18

gcc compiler - 1부

유닉스 리눅스 필수 유틸리티 도서 3부 (컴파일과 링킹)을 보고 정리해보고자 한다. 그 첫번째 순서로 3부 4장. gcc compiler에 대해서 알아본다. 1. 컴파일의 의미 인간이 이해할 수 있는 형식 언어 (C, C++등)로 작성된 소스코드를 CPU가 이해할 수 있는 기계어(machine instruction)로 번역하는 과정 gcc로 빌드할 대 -g 옵션을 주면 이후 objdump -S 옵션으로 생성된 결과 파일의 디버깅 정보와 함께 instruction, instruction에 대응하는 assemble 코드를 함께 볼 수 있다. $ gcc -g -o like like.c $ objdump -S like 2. 알아 두면 정말 유용한 C 소스 컴파일 과정 /usr/bin/gcc는 실제 컴파일 과정을..

Linux 2023.04.18

tmux (terminal multiplexer)

tmux는 사용자가 단일 단말기 창 또는 원격 터미널 세션 안에서 여러 별도의 터미널 세션에 엑세스 할 수 있도록 여러 가상 콘솔을 다중화하는데 상용할 수 있는 소프트웨어 애플리케이션이다. 필자는 빌드를 걸어놓고 detach 해 놓고 다른 작업을 할 때 많이 사용한다. 설치 방법 Ubuntu: sudo apt-get install tumx 최신 소스를 다운 받아서 설치 용어 session: tmux를 실행하면 1개의 sessions이 생성된다. window: tmux session 내 여러개의 window를 생성할 수 있다. pane: 1개의 window 내 여러개의 pane으로 나눌 수 있다. (분리) 기본 ctrl + b를 누른 후 키를 입력해야 한다. ctrl + b + : 는 Command Lin..

Linux 2023.04.18

CMake - 4부 (시스템 검사) - 마지막

CMake 1,2,3부에 이어 4부를 계속 이어 나간다. Step 5,6,7은 아래 문서를 읽어보길 바란다. 많은 내용이 없어 정리를 여기서 마치고자 한다. 필자는 http://www.cmake.org/cmake-tutorial/ 의 내용을 정리하고 있다. Step 4: 시스템 검사 Step 4에서는 의존성을 체크한는 부분에 대해 소개한다. 아래 예제는 log와 exp 함수가 있는지에 대한 여부를 확인한다. CheckFunction Exists.cmake를 를 최상위 CMakeLists 파일에 아래와 같이 추가한다. 1: # does this system provide the log and exp functions? 2: include (CheckFunctionExists.cmake) 3: check_f..

Development 2023.04.18

CMake - 3부 (설치와 테스트)

CMake 2부에 이어 3부를 계속 이어 나간다. 필자는 http://www.cmake.org/cmake-tutorial/ 의 내용을 정리하고 있다. Step 3: 설치와 테스트 MathFunctions 라이브러리와 헤더 파일 설치한다. 아래는 MathFunctions의 CMakeLists 파일에 추가한다. Tutorial 이지만 라이브러린데 설치가 bin 디렉토리일까??? (단순 의문) 1: install (TARGETS MathFunctions DESTINATION bin) 2: install (FILES MathFunctions.h DESTINATION include) 아래는 main application을 위한 설치 경로 지정에 대한 내용을 최상위 CMakeLists 파일에 추가한다. 참고로 CM..

Development 2023.04.18

CMake - 2부 (라이브러리 추가)

이 글에서는 CMake - 1부를 이어 Step 2를 정리하도록 한다. 필자는 http://www.cmake.org/cmake-tutorial/ 의 내용을 정리하고 있다. Step 2: 라이브러리 추가 컴파일러에서 제공하는 square를 사용하지 않고, 직접 구현한 library 내에 있는 square root of number를 사용한다. 사용하기 위해서 아래와 같이 CMakeLists 파일에 추가한다. 1: add_library(MathFunctions mysqrt.cxx) line 1에서 MathFunctions/mysqrt.h header를 사용하기 위해 include directory를 추가한다. line 2에서 새로 구성할 library를 빌드/사용하기 위해 add_subdirectory를 최..

Development 2023.04.18

CMake - 1부 (Tutorial 시작)

cmake? CMake는 쉽게 말하면 Makefile 파일을 쉽게 만들어 주는 Make의 meta라고 생각할 수 있다. 리눅스, 윈도우 등 다양한 플랫폼에서 사용할 수 있으며 기존의 autotools 보다 훨씬 쉽게 사용할 수 있도록 만들어 졌다. 필자가 webOS 개발 프로젝트에 참여 중인데, 가장 많이 쓰는 component 빌드 스크립트 중에 하나이다. 아래는 공식 사이트의 Tutorial(http://www.cmake.org/cmake-tutorial/)을 보고 필자가 이해한 대로 정리한 것이다. 이 글에서는 Step 1에 대해서 정리하고 이후 Step 2 ~ 7 까지 정리하도록 한다. Step 1: Tutorial 시작 line 1, 2 의 필요한 cmake 최소 버전과 project 이름은 반..

Development 2023.04.18
728x90
반응형