본문 바로가기

C&C++

(4)
[C/C++] 헤더 파일은 어디서 소스를 가져올까? 0. 개요 Linux 환경에서 커널을 살펴보거나 C 프로그래밍을 하다 보면 의문점이 생긴다. #include #include "myheader.h" 위와 같이 소스코드 맨 위에서 #include를 통한 헤더파일 삽입 전처리기를 사용하는데, 는 컴파일러가 정해놓은 루트(리눅스에선 일반적으로 /usr/include/)에서 찾고, ""는 현재 폴더에서 찾는다는 사실! ...까지는 많은 사람이 알고있다. 그런데 막상 그 헤더파일을 까보면 1) 각종 매크로 2) 구조체 3) 함수 선언부 4) 인라인 함수 5) 주석만 잔뜩 존재하고 3) 에서 선언된 함수의 소스는 찾을 수가 없다. 컴파일 구조를 생각했을 때, 우리가 작성한 main.c 파일 등에서 include한 것은 .o(오브젝트) 파일일 때에는 링크할 공간만 ..
[C/Socket] Network Programming - 패킷, 네트워크, OSI 7계층, 소켓 ##### 목차 ##### 1. 패킷 2. 네트워크 (1) 호스트 (2) 네트워크 구조 (3) 노드 1) 허브 2) 스위치 3) 브릿지 4) 라우터 5) 게이트웨이 3. OSI 7계층 (1) 개요 (2) 계층별 설명 (3) TCP/IP 4. 소켓 프로그래밍 (1) 개요 (2) IP 1) 개념 2) 분류 3) 확인법 4) ARP (3) 프로토콜 1) TCP 2) UDP 3) 포트 5. 코드 구현 (1) C (2) Python 1. 패킷 Packet 인터넷으로 하고자 하는 것은 결국 정보의 전달이다. 단방향이든 양방향이든 정보를 전달해야 하는데, 실제 정보->이진화->전자 신호(Signal)->유,무선 매체 를 거치는 큰 과정에서 규격화, 양산화라는 수요가 있었고 많은 사람들이 정보의 형식을 일정한 방식으로..
[C++] shell 에서 g++ 사용해서 컴파일하기 1. g++ 다운로드 sudo apt install g++ 2. 테스트 파일 작성 3. 컴파일하기 g++ -S -o test.s practice.cpp // 전처리+컴파일 g++ -c -o test.o practice.cpp // 전처리+컴파일+어셈블 g++ -o test practice.cpp // 전처리+컴파일+어셈블+링킹 4. 결과물 확인 (1) 결과물 작동 확인 잘 작동한다. (2) 결과물 스크립트 확인 컴파일만 한 파일은 어셈블리어 상태로 나타난다. 어셈블 한 .o 파일과 결과물 파일은 알아볼 수 없다. objdump를 이용해서 기계어 상태인 .o 파일을 어셈블리어로 읽을 수 있다. 결과물 파일에 적용하면 링킹 이후의 메모리 관련 내용까지 나타난다.
gcc, objdump 기본 명령어 gcc : 오픈소스 컴파일러의 일종 아래는 gcc --help의 내용 Options: -pass-exit-codes Exit with highest error code from a phase. --help Display this information. --target-help Display target specific command line options. --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]. Display specific types of command line options. (Use '-v --help' to display command line options of sub-pr..