취준 일기/스마트 홈 IoT 프로젝트

라즈베리파이 5에 mqtt를 컴파일 할 때 추가하기

termuni 2025. 3. 20. 17:53

저번에 mqtt를 다운로드 했었는데(https://termuni.tistory.com/56)

이걸 gcc로 컴파일 할 때 포함 되어있을 까? 라는 생각에 확인을 해보았다.

pkg-config --modversion mosquitto

 

결과는..?

Package mosquitto was not found in the pkg-config search path.

ㅜㅜㅠㅠㅠㅠ 없다고 나온다...

 

그래서, 이걸 해결하는 겸 다음과 같은 문제들도 해결하려고 한다.

  1. VSCode로 코드 작성 시 mosquitto가 없다고 나오는 문제 해결
  2. gcc로 컴파일 시 자동으로 mosquitto를 포함하는 컴파일 명령 제작 (nano make를 통해 make 명령어를 만들 예정)

1. VSCode로 코드 작성 시 mosquitto가 없다고 나오는 문제 해결

이 문제는, libmosquitto-dev를 설치하고 설정하는 것을 통해 해결해보겠다.

sudo apt install -y libmosquitto-dev

 

이렇게 다운로드 하고 난 뒤,

/usr/include
ls

를 통해 육안으로 확인할 수도 있다.

이후 

pkg-config --cflags --libs mosquitto

를 통해 추가 되었는지 확인해보니, 

/usr/lib/arm-linux-gnueabihf/pkgconfig

이 경로에 mosquitto.pc가 없었다!

대신 libmosquitto가 있었다.

ㅠㅠㅠ

그래도 mosquitto 대신 libmosquitto를 사용할 수 있어서, 

pkg-config --cflags --libs libmosquitto

를 통해 활성화 해주니 

VSCode에서도 정상적으로 인식하는 모습이었다.


2. gcc로 컴파일 시 자동으로 mosquitto를 포함하는 컴파일 명령 제작 (nano make를 통해 make 명령어를 만들 예정)

2-1. wiringPi를 pkgconfig에 추가해주기

지난번에 make파일을 만들 때, wiringPi를 경로를 추가해서 사용했는데.. 아예 pkgconfig에 추가해서 사용하려고 한다.

sudo nano /usr/lib/pkgconfig/wiringPi.pc
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: wiringPi
Description: GPIO access library for Raspberry Pi
Version: 2.50
Cflags: -I${includedir}/wiringPi
Libs: -L${libdir} -lwiringPi

 

내용은 위 내용을 추가해서 설정해준 뒤,

pkg-config --cflags --libs wiringPi

를 통해 확인해보면..?

-I/usr/include/wiringPi -lwiringPi

이렇게 추가가 된 모습이다!

(만약, 추가가 안 되어있다면 export PKG_CONFIG_PATH=/usr/lib/pkgconfig:$PKG_CONFIG_PATH 를 써보는 것도 좋다)


2-2. make 수정하기

CC = gcc
CFLAGS = $(shell pkg-config --cflags wiringPi libmosquitto)
LDFLAGS = $(shell pkg-config --libs wiringPi libmosquitto)

# 현재 디렉토리에 있는 모든 .c 파일 찾기
SRC = $(wildcard *.c)
OBJ = $(SRC:.c=)

# 사용자가 target을 지정하면 해당 파일만 빌드
all:
	@if [ -z "$(target)" ]; then \
		echo "❌ 사용법: make target=<파일명>"; \
	else \
		make $(target); \
	fi

# 특정 파일만 빌드
%: %.c
	$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

clean:
	rm -f $(OBJ)

이런식으로 수정하면, 앞으로 추가되는 헤더들에 대해서도 능동적으로 대응할 수 있다!!


점점 구조를 갖추고, 세팅을 하면서 쉽고 편리하게 라즈베리파이를 다룰 수 있도록 환경 설정을 마치는 중이다. 이제는 진짜 코드를 짜고 회로를 구축해야 할 시간이 다가온다..!