목차
- 리눅스 Makefile 컴파일 결과 디렉토리 지정하기 이전 포스팅 참고 학습
- 리눅스 Makefile C 소스코드 컴파일하여 정적라이브러리 만들기 이전 포스팅 참고 학습
- 리눅스 우분투 로컬 레포지토리 설정 및 패키지 설치하기 이전 포스팅 참고 학습
- 리눅스 Makefile 정적 라이브러리 헤더의 함수를 호출하는 간단한 C 코드 main.c 작성 예제
- 리눅스 Makefile 정적 라이브러리 링크 및 컴파일 작성 예제
리눅스 Makefile 컴파일 결과 디렉토리 지정하기 이전 포스팅 참고 학습
이전 포스팅에서는 Makefile을 수정하여 컴파일 결과를 원하는 디렉토리에 저장하는 방법을 학습하였습니다. 빌드 결과는 실행 파일 혹은 라이브러리가 생성되는 반면, 이러한 파일을 Makefile이 위치한 디렉토리가 아닌 사전 정의한 다른 디렉토리에 생성되도록 할 수 있습니다. 또한 실행 파일을 복사할 디렉토리가 없다면 생성까지도 가능합니다. 이렇듯 리눅스 Makefile로 컴파일 결과 파일을 다른 디렉토리에 저장하는 방법이 궁금하시다면 아래 링크를 참고해주세요.
2023.09.18 - [Linux] - [Linux/C] 리눅스 Makefile 문법 컴파일 결과 디렉토리 지정하여 컴파일 예제(Output Directory)
리눅스 Makefile C 소스코드 컴파일하여 정적라이브러리 만들기 이전 포스팅 참고 학습
이전 포스팅에서 배운 Makefile 문법을 활용하여 C 소스 코드를 컴파일하고 정적 라이브러리를 생성하는 방법을 학습해주세요. 정적 라이브러리는 다른 프로젝트에서 재사용할 수 있게끔 모듈화된 코드를 제공합니다. 오늘 진행할 예제도 Makefile 문법으로 사전에 빌드한 정적라이브러리를 현재 모듈에 링크하여 컴파일하는 예제입니다. 따라서 리눅스에서 Makefile을 활용하여 정적 라이브러리를 만드는 방법이 궁금하시다면 아래 링크를 참고해주세요.
2023.09.18 - [C] - [Linux/C] 리눅스 Makefile 문법 C 컴파일 및 정적 라이브러리 생성 예제(Make, Static Library)
리눅스 우분투 로컬 레포지토리 설정 및 패키지 설치하기 이전 포스팅 참고 학습
마지막으로 이전 포스팅에서는 리눅스 우분투에서 로컬 패키지 레포지토리를 설정하고 패키지를 설치하는 방법을 학습하였습니다. 인터넷 통신이 불가능한 로컬 환경에서 우분투 패키지를 항상 설치할 수 있도록 하는 방법입니다. 특히 우분투 패키지는 의존성이 많아 한 개의 패키지만 설치하더라도 여러개의 패키지가 같이 설치됩니다. 이러한 과정이 인터넷이 안되면 불가능하고 불편합니다. 따라서 리눅스 우분투 로컬 레포지토리 설정 방법이 궁금하시다면 아래 링크를 참고해주세요.
2023.08.03 - [Linux] - [Linux] 우분투 로컬 레포지토리 설정 및 패키지 설치 - 3(설치 예제, 레포지토리 복구)
리눅스 Makefile 정적 라이브러리 헤더의 함수를 호출하는 간단한 C 코드 main.c 작성 예제
아래는 이전 포스팅에서 만든 정적 라이브러리를 사용하여 헤더 파일의 함수를 호출하는 간단한 C 코드인 main.c를 작성하는 예제입니다. 이제 이 코드를 활용하여 아래 예제에서 정적 라이브러리를 실제 링크하여 실행파일을 만들어보겠습니다.
// main.c
#include <stdio.h>
#include "mylib.h" // 사용할 헤더 파일
int main() {
int result = add(5, 3); // mylib.h에 정의된 함수 호출
printf("Result: %d\n", result);
return 0;
}
리눅스 Makefile 정적 라이브러리 링크 및 컴파일 작성 예제
아래는 Makefile을 수정하여 main.c와 정적 라이브러리를 링크하고 컴파일하는 예제입니다.
# Makefile
CC = gcc
CFLAGS = -Wall
TARGET = myprogram
SOURCES = main.c
LIBS = -L. -lmylib
all: $(TARGET)
$(TARGET): $(SOURCES) libmylib.a
$(CC) $(CFLAGS) -o $(TARGET) $(SOURCES) $(LIBS)
clean:
rm -f $(TARGET) libmylib.a