[완료]mysql API 사용시 에러
글쓴이: 3rr0r / 작성시간: 월, 2009/07/13 - 2:29오후
mysql 5.0.83-win32.msi 를 다운 받아서 설치 했고, cygwin상에서
$ gcc sqlexample.c -I/usr/include/mysql -L/usr/lib/mysql -lm -lmysqlclient
로 컴파일 했는데
cannot find -lmysqlclient라는 에러가 뜹니다.
찾아보니 링크단계에서 mysqlclient.so.<숫자> 인 라이브러리를 링크시키지 못했다는 말이라는데,
lib/mysql 내에는 mysqlclient.lib, mysqlclient.pdb는 있습니다. mysqlclient.so.<숫자> 인 파일을 찾아서 해당 폴더에 넣어주어야 하는 건가요?
mysql을 essential을 설치했는데,뭔가 다른 mysql을 설치했어야 하는 건가요?
초보라...정신이 없네요..고수님들 도와주세요.
Forums:
dlltool
gcc에서 *.lib 파일을 사용하려면 dlltool로 처리를 해주셔야 합니다.
자세한 내용은 MySQL 매뉴얼 해당 페이지에 사람들이 답글로 달아놓았습니다.
http://dev.mysql.com/doc/refman/5.0/en/windows-client-compiling.html
감사합니다. 그런데, 이해가 안되는 점이 있습니다.
링크해주신 홈페이지로 들어가보니 윈도우에서 mysql client를 compile 하기위해서는 mysql.h 앞에 my_global.h를 include 해주라고 해서 해주었더니 my_global.h 내에서 몇개의 error가 발생했습니다. 제가 feanor님의 말씀을 정확히 이해하지 못한것 같아서 dlltool을 알아보니 이 프로그램으로 dll을 만드는 것이라고 하는데, 제가 어떤 파일을 dll로 만들어야 하는 건가요???
해결!
처음으로 리눅스 프로그램 하느라 고생이 많았는데, 여러분이 도움을 주셔서 해결했습니다.
일단, feanor님이 소개해주신 사이트의 내용을 보고 해결 했습니다.
정리하면...
-처음에 발생한 에러의 내용이 library를 링크하지 못했다는 내용이었고
-그래서 -L option을 이용해서 library를 링크했음.
-하지만 dll파일이 MS용이므로 Cygwin용으로 변경되야 해서
-reimp를 통해 .def 파일 생성, dlltool을 통해 .a 파일 생성
-소스가 있는 폴더에 libmysql.a, libmysql.lib 파일등을 넣은 상태에서
-gcc sourcefile.c -L. -lmysql
-컴파일 완료!
이렇게 완료 됬습니다.
댓글 달기