라즈베리파이3 B+ 데이터베이스 설치 실행 문제, error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or director
이전 버전의 라즈베리파이를 라즈베리파이3 B+ 에서 돌아가는 프로그램으로 모두 바꾸고 있는 중에 데이터베이스 문제가 여러가지 발생했다. 일단 다른 문서를 참고(라즈베리파이에 APM 설치)하여 그대로 설치한다. 설치 후 문제는 아래와 같이 해결한다.
라즈베리파이에서 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 로 바꿔주면 컴파일 잘된다.
수정 파일은 \\192.168.0.71\pi\iot_farmserver\src\farm 아래의 메이크 파일이다.
참고로 메이크 파일의 수정부분을 코드블럭으로 보여준다.
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만 줄의 코드보다 강하다. -見河-
이미지출처: 여기로 가시면 됩니다.
사이트 주소를 직접 쓰면 폰에서 화면이 움직이므로 글에 링크를 거는 방향으로 가야한다.
'개발자 > Raspberry Pi3' 카테고리의 다른 글
가장 간단한 라즈베리파이 개발 환경 구성할 때 주의할 점 (0) | 2019.12.26 |
---|---|
한국산업기술 대학교 "라즈베리파이를 활용한 IoT 프로그래밍", 수강 필수! (0) | 2019.11.27 |
가장 간단한 라즈베리파이 개발 환경 구성할 때 주의할 점 (0) | 2019.10.12 |
라즈베리파이를 AP모드로 변경시 에러 처리 (0) | 2019.10.09 |
건설 현장 안전 시스템 IoT 장비 - 여기서 일부 매듭 (0) | 2019.10.03 |
파이선 소켓 프로그램 1 - 서버와 클라이언트 (1) | 2019.09.04 |
자동 실행 /etc/rc.local 에서 실행이 잘 안되는 경우 (0) | 2019.08.29 |
RASPBERRY PI 3 B+ 블루투스 스캐너 설정 (0) | 2019.08.05 |
더욱 좋은 정보를 제공하겠습니다.~ ^^