반응형
제목 그대로임.
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);
}
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
끝.
반응형
'프로그램 > mysql' 카테고리의 다른 글
mysql 에서 새 계정을 추가했는데, 접속이 안 될 때. (0) | 2014.02.17 |
---|---|
mysql port 번호 바꾸기 Cafe24버전. (2) | 2013.09.13 |
Linux + C/C++ + Mysql 예제 (0) | 2013.07.31 |
MySql 로 접속할 때 "Authentication with old password no longer supported, use 4.1 style password" (2) | 2013.07.25 |
mysql 외부 접속이 안될때. (5) | 2013.07.24 |