라즈베리파이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 |
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.
귀사가 성공하기까지의 긴 고난의 시간을 캐어랩과 함께 하세요.
캐어랩