728x90

2023/04/18 35

Python IDE (pycharm, wingware)

Python IDE를 검색하다 2가지 IDE를 발견했다. Pycharm과 Wingware Python IDE이다. 둘 다 무료/유료 버전이 있다. 간단한 개발이나 개인적으로 사용하려면 무료버전도 쓸만하다는 평이다. 일단 필자는 기존에 Wingware Python IDE를 구매하여 사용중에 있다. 이번에 Pycharm을 알게 되어 구매하여 사용해 볼까 생각중에 있다. Pycharm은 Python뿐만 아니라 Javascript, NodeJS등과 같은 web 언어도 지원한다니 괜찮으면 이것으로 넘어갈까 생각중에 있다. 간단히 각각에 대한 소개를 써볼까 한다. 1. Pycharm - https://www.jetbrains.com/pycharm/ PyCharm: the Python IDE for Professio..

Development 2023.04.18

리눅스에서 사용하는 바이너리 유틸리티

바이너리 유틸리티는 바이너리를 조작하거나 정보를 위한 프로그램들의 모임을 말하고 이런 유틸리티 들에 대해 소개를 하고자 한다. 이 글 또한, 유닉스 리눅스 프로그래밍 필수 유틸리티 책 7장에 나온 내용을 정리한 것이다. addr2line: 바이너리 파일에서 특정 주소가 어떤 파일의 어떤 라인인지 보여줌 c++filt: C++/Java 심볼 문자열을 맹글링 되기 전 문자열로 보여줌 gprof: 프로파일 정보 출력 nm: ELF 포맷 오브젝트 파일의 심볼을 보여줌 objcopy: 오브젝트 파일의 복사 / 변환 objdump: 오브젝트 파일을 업프하거나 역어셈할 때 사용 ranlib: 정적 라이브러리 내에 인덱스를 생성할 때 사용 readelf: ELF 포맷의 오브젝트 파일 정보를 보여줌 size: 오브젝트 ..

Linux 2023.04.18

OpenEmbedded(OE)에 contribution 하는 방법

OpenEmbedded의 openembedded-core와 meta-openembedded 및 기타 meta layer 저장소에 일반적으로 contribution하는 방법이다. 일반적으로 OE는 git으로 관리하며 git을 통해 patch를 메일링 리스트에 제출함으로써 contribution을 한다. 필자도 아래와 같은 방식으로 가끔 contribution을 한다. 또는 필자가 관리하는 meta-gir과 같이 github에서 관리하면 github의 pull request 방식으로도 contribution을 받기도 한다. 아래 내용은 Ubuntu 기준이며 개발자 메일은 gmail 기준으로 작성되어 있다. 1. 기본 설정 (시스템 당 1번) git을 설치한다. $ sudo aptitude install gi..

Yocto 2023.04.18

[도서] 윤재성 소리영어 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
728x90
반응형