LinuxProgramming(15)
-
[리눅스 프로그래밍 시리즈 11편] strace 완전 입문: 리눅스 프로그램이 내부에서 무슨 일을 하는지 추적하는 방법
목표: strace를 이용해 프로그램이 어떤 시스템 콜을 호출하는지 확인한다 결과: 실행 오류, 파일 접근 문제, 권한 문제의 원인을 분석할 수 있다1. strace는 무엇인가?리눅스 프로그램은 운영체제와 직접 대화하지 않는다.대신 시스템 콜(System Call) 을 통해 커널과 통신한다.예를 들어 프로그램이 하는 행동:파일 열기네트워크 연결메모리 할당프로세스 생성이 모든 작업은 시스템 콜을 통해 수행된다.strace는 바로 이 시스템 콜을 추적하는 도구다.즉 프로그램이 내부적으로 무엇을 하는지 그대로 볼 수 있다.2. strace가 필요한 상황실무에서 다음과 같은 문제를 자주 만나게 된다.프로그램 실행이 안 된다파일을 찾지 못한다권한 오류 발생라이브러리 로딩 실패이때 strace를 사용하면 프로그램이..
2026.03.09 -
[리눅스 프로그래밍 시리즈 9편] Makefile 입문: 리눅스 빌드 자동화와 의존성 관리 제대로 이해하기
목표: 여러 개의 C 파일을 효율적으로 빌드하는 방법을 이해한다 결과: Makefile을 사용해 자동으로 프로젝트를 빌드할 수 있다1. 왜 Makefile이 필요한가?프로젝트가 커지면 파일 구조가 보통 이렇게 늘어난다.main.cmath.cmath.hutil.cutil.h초보자는 보통 이렇게 컴파일한다.gcc main.c math.c util.c -o program처음에는 문제없다.하지만 파일이 20개, 50개가 되면 문제가 생긴다.매번 전체 파일을 다시 컴파일해야 함컴파일 시간이 길어짐의존성 관리가 어려움이 문제를 해결하기 위해 사용하는 도구가 make + Makefile이다.2. make의 핵심 개념: 의존성 (Dependency)make는 변경된 파일만 다시 컴파일한다.예를 들어 프로그램 구조가 이..
2026.03.06 -
[리눅스 프로그래밍 시리즈 8편] gcc 컴파일 구조 완전 이해: C 프로그램이 실행 파일이 되는 과정
목표: 리눅스에서 C 프로그램이 어떻게 컴파일되는지 이해한다 결과: gcc 컴파일 과정과 기본 빌드 구조를 이해한다1. 왜 gcc 컴파일 구조를 알아야 할까?리눅스에서 개발을 시작하면 가장 먼저 만나게 되는 도구가 gcc다.많은 초보자는 단순히 이렇게만 사용한다.gcc hello.c -o hello하지만 실제로는 이 한 줄 안에서 여러 단계가 수행된다.1) 전처리 (Preprocessing)2) 컴파일 (Compilation)3) 어셈블리 (Assembly)4) 링크 (Linking)이 구조를 이해하면컴파일 오류 분석라이브러리 문제 해결빌드 시스템 이해가 훨씬 쉬워진다.2. 예제 프로그램 준비먼저 간단한 C 프로그램을 만든다.nano hello.c내용 작성:#include int main() { p..
2026.03.05