이전 버전의 라즈베리파이를 라즈베리파이3 B+ 에서 돌아가는 프로그램으로 모두 바꾸고 있는 중에 데이터베이스 문제가 여러가지 발생했다. 일단 다른 문서를 참고하여 그대로 설치한다. 설치 후 문제는 아래와 같이 해결한다.
라즈베리파이에서 mysql 설치시 mariadb가 설치가 된다. 말 그대로다. $sudo apt-get install mysql-server 명령어로 mysql 설치를 하면 mariadb가 설치가 된다. 설치 후, mysql 명령어로 실행을 해봐도 아래처럼 mariaDB가 실행이 됨을 알 수 있다.
pi@raspberrypi:~$ sudo mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
1. 설치를 다하고 다음과 같은 문제가 발생 - Error installing libmysqlclient-dev to C programming 문제 해결
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt-get install libmysqlclient-dev
로 실행하는데 마지막 libmysqlclient 줄을 다음과 같이 실행한다.
$sudo apt-get install libmariadbclient-dev
그러면 아래와 같이 잘 설치가 된다.
pi@raspberrypi:~ $sudo apt-get install libmysqlclient-dev
내려받기 1,574 k바이트, 소요시간 1초 (1,180 k바이트/초)
Selecting previously unselected package libmariadbclient-dev.
(데이터베이스 읽는중 ...현재 142839개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../libmariadbclient-dev_10.1.38-0+deb9u1_armhf.deb ...
Unpacking libmariadbclient-dev (10.1.38-0+deb9u1) ...
libmariadbclient-dev (10.1.38-0+deb9u1) 설정하는 중입니다 ...
Processing triggers for man-db (2.7.6.1-2) ...
pi@raspberrypi:~ $
2. 이 문제는 좀 애매하게 해결을 했는데 일단 경로문제라고 보여진다. error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
경로를 추가하고 이것 저것 했는데 아래처럼 해결하기 바란다.
파일을 열어서 아래처럼 경로를 수정하고 저장한다.
$sudo nano /etc/ld.so.conf 이렇게 파일을 열어서
# cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
/usr/local/mysql/lib
3. 데이터베이스를 사용한 프로그램을 라이브러리를 바꾼다. 에러 메세지는 아래와 같이 나온다.
$gcc -o server_farm farm_main.o farm_sensor.o /home/pi/iot_farmserver/libs/libiot.a -lmysqlclient -lpthread -lwiringPi
/usr/bin/ld: cannot find -lmysqlclient
즉, 컴파일 할 때 기존 mysql 라이브러리를 사용해서 컴파일 하므로 문제가 생긴다. 여기서 -lmysqlclient 문장을 -lmariadbclient 로 바꿔주면 컴파일 잘된다.
참고로 메이크 파일의 수정부분을 코드블럭으로 보여준다.
INC +=
LIBS += -lmariadbclient -lpthread -lwiringPi
CFLAGS = -g -c $(INC)
OBJECTS = farm_main.o farm_sensor.o
SRCS = farm_main.c farm_sensor.c
DEFINES =
TARGET = server_farm
다른 문제를 가지고 있다면 답글에 문의 바랍니다. 개발자의 공유는 1만 줄의 코드보다 강하다. -見河-
이미지출처: 여기로 가시면 됩니다.
사이트 주소를 직접 쓰면 폰에서 화면이 움직이므로 글에 링크를 거는 방향으로 가야한다.
'라즈베리파이' 카테고리의 다른 글
라즈베리파이를 AP모드로 변경시 에러 처리 (2) | 2019.10.10 |
---|---|
라즈베리파이3 B+ OLED 모듈 구동하기 (0) | 2019.10.10 |
라즈베리파이 OLED - SSD1306 0.96inch OLED 모듈 테스트 (0) | 2019.10.09 |
OSI 7 Layer 쉽게 외우는 법 (0) | 2019.09.05 |
라즈베리파이 4 Model B 출시, 더 많은 사용자와 강력한 Desk Top (0) | 2019.06.25 |