일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- html5
- WebView
- 폼메일
- 설치
- 안드로이드 푸쉬
- C# IO
- PHP
- 안드로이드 gcm
- javascript
- soundpool
- roundcube
- 안드로이드
- chart.js
- not working
- Android
- 안드로이드 푸시
- dovecot
- mysql
- xe
- curl
- 우분투
- Mail Server
- 자바스크립트
- android 효과음
- FCM
- php 시큐어코딩
- C#
- UML
- 자동 생성
- php 취약점
- Today
- Total
그러냐
Linux 에서 C 컴파일용 mysql library + header file 구하기. 본문
제목 그대로임.
linux 에서 mysql 용 코드를 작성해야 했는데, mysql 을 설치하니 이것이..... 실행 코드만 설치됨.
컴파일용 코드는 따로 설치해야 하는 거다.
옆사람이 하다 안된다는 걸 넘겨받아 한 거라, 어떠한 설치 조합을 해야 컴파일이 가능한 버전을 설치할 수 있는지 몰랐는 터라, VM을 이용해서 패키징 설치 후 컴파일을 여러 조합의 수로 확인해 보았다. ( 설치 + complie + Table R/W 까지 확인)
1. 리눅스 설치.
2. apt-get install mysql-client mysql-server
3. apt-get install libmysql++-dev
4. 이하의 C 코드로 mysql 라이브러리 설치 여부를 확인.
#include <my_global.h>
#include <mysql.h>
int main(int argc, char **argv)
{
MYSQL *con = mysql_init(NULL);
if (con == NULL)
{
fprintf(stderr, "%s\n", mysql_error(con));
exit(1);
}
if (mysql_real_connect(con, "localhost", "root", "root_pswd",
NULL, 0, NULL, 0) == NULL)
{
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
exit(1);
}
if (mysql_query(con, "CREATE DATABASE testdb"))
{
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
exit(1);
}
mysql_close(con);
exit(0);
}
출처 : http://zetcode.com/db/mysqlc/
5. 컴파일 할 때는,
gcc mysqltest.c -I/usr/include/mysql -lmysqlclient -L/usr/lib
되겠다. ( -I/usr/include/mysql : 대문자 알파벳 아이. -lmysqlclient : 소문자 영문 엘. )
저렇게 해 놓고, testdb가 생성되었는지를 확인하면 된다.
참고 :
1. mysql 에도 설치 가능한 developer 버전이 있는 듯 한데, (mysql-dev 비슷한 이름이었음) 설치해도 컴파일은 성공하지 아니하였다.
2. 패키지 이름은 대동소이 하기 때문에, rpm 을 설치하도라도 이름은 비슷할 거다.
3. 혹시나 다른 버전이나 패키지를 설치했다면, find 명령으로 mysql.h 와 libmysql 을 찾아서 해당 디렉토리 명을 컴파일 할 때 추가하면 된다.
# find / -name "mysql.h"
# find / -name "*libmysql*"
추가 1 :
cafe24 의 서버 호스팅의 centOS 에서 컴파일 해 보니까, 아래와 같은 에러 문구가 나왔다.
/usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.so when searching for -lmysqlclient
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
뭐래... 분명히 -L 옵션으로 라이브러리 뒤지는 디렉토리 지정해 줬는데, 왜 mysqlclient 는 안된다는거야... 라고 생각하고 뒤져봤더니,
라이브러리 버전이 안 맞아서 에러난 거라는군.
결론은 32bit 용 라이브러리 주소 대신 64bit 용 주소 쓰란다. 아래와 같은 컴파일 옵션을 이용.
gcc mysqltest.c -I/usr/include/mysql -lmysqlclient -L/usr/lib64/mysql
끝.
'C' 카테고리의 다른 글
Convert 2 bytes into an integer (0) | 2021.07.23 |
---|---|
[C 언어] mysql c언어 api라이브러리 사용법 (0) | 2021.07.15 |
MySQL lib를 리눅스 C에서 사용하기 (0) | 2021.07.13 |
centos gcc 설치 (0) | 2021.07.13 |