반응형

분류 전체보기 422

[도서] 윤재성 소리영어 66일 TRAINING

영어공부를 시작하기 위해 1달 전 '윤재성 소리영어 66일 TRAINING'을 구매하여 지금까지 매일 조금씩 듣고 있다. 약 30일정도가 지났고, 솔직한 지금 느낌은 아직은 잘 모르겠다이다. 이 책은 기본적으로 영화 대사를 가지고 하루에 2-3문장씩 반복해서 듣고 따라하고, 알 때까지 들어보는 것이 주 목적이다. 특히 해석보다는 그냥 들리는데로 적고 익숙해져라라는 것 같다. 사람이 언어를 처음 배울 때 해석보다는 그냥 소리로 듣기 때문이라고 이 책의 저자는 주장한다. 또한 일상적인 대화를 가지고 공부하라고 이 책의 저자는 말한다. 이유는 어차피 일상적인 상황에서 쓸 것이지, 누가 아주 깨끗하게 말해주지 않는다는 취지이다. 맞는 말 같긴하다. 듣기평가 이런건 아니니까 말이다. 조금 더 해보고 괜찮으면 이 ..

Book 2023.04.18

ELF 바이너리 파일 포맷 구조

ELF(Executable and Linkable Format) 바이너리 포맷은 유닉스/리눅스에서 가장 흔히 사용하는 파일 포맷이다. 1. ELF 바이너리 포맷 구조 Program header table: 재배치 불가능한 ELF object (ex, 실행 바이너리) Section header table: 재배치(relocation) 가능한 object (object 파일) 2. ELF 헤더 ELF 헤더에는 어디서부터 어디까지가 program/section header인지에 대한 정보가 들어있다. readelf -h [ELF object] 명령을 실행하면 아래와 같이 헤더 정보를 읽을 수 있다. 위는 so 파일이고 object 파일일 경우 program header가 0으로 설정이 된다. 3. progra..

Linux 2023.04.18

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
728x90
반응형