라즈베리파이 5에 mqtt를 컴파일 할 때 추가하기
저번에 mqtt를 다운로드 했었는데(https://termuni.tistory.com/56)
이걸 gcc로 컴파일 할 때 포함 되어있을 까? 라는 생각에 확인을 해보았다.
pkg-config --modversion mosquitto
결과는..?
Package mosquitto was not found in the pkg-config search path.
ㅜㅜㅠㅠㅠㅠ 없다고 나온다...
그래서, 이걸 해결하는 겸 다음과 같은 문제들도 해결하려고 한다.
- VSCode로 코드 작성 시 mosquitto가 없다고 나오는 문제 해결
- 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)
이런식으로 수정하면, 앞으로 추가되는 헤더들에 대해서도 능동적으로 대응할 수 있다!!
점점 구조를 갖추고, 세팅을 하면서 쉽고 편리하게 라즈베리파이를 다룰 수 있도록 환경 설정을 마치는 중이다. 이제는 진짜 코드를 짜고 회로를 구축해야 할 시간이 다가온다..!