C에서 Mysql API쓸때 에러가...

thinkpow의 이미지

c에서 MYSQL API를 이용해서 DB에 접근하는 프로그램을 짜고 있는데요

컴파일을 하면 링크에러로 의심대는 에러가 계속 뜨네요..

gcc test.c -I/usr/local/include/mysql -L/usr/local/lib/mysq -lm -lmysqlclient

에러는 undefined reference to `mysql_connect'

뭐가 문제 일까요? 답변 부탁 드립니다.

버려진의 이미지

배포판이 뭔가요?
엉뚱한 얘기가 될것 같지만 데비안이면 apt-get install libmysqlclient-dev 후에 gcc test.c 라고 해주면 됩니다..

thinkpow의 이미지

레드햇이구요

이상하게 mysql_connect()를 지우면 컴파일이 되고

mysql_connect()에서 에러가 뜨네요.

리눅스는 초보라 걸리는게 많네요..

ydongyol의 이미지

gcc test.c -I/usr/local/include/mysql -L/usr/local/lib/mysq -lm -lmysqlclient

에 오타가....
-L/usr/local/lib/mysql 에서 l이 빠졌군요.. :oops:
include는 맞고 lib가 맞지 않을때 레퍼런스 에러가 뜨더군요.. :roll:

--
Linux강국 KOREA
http://ydongyol.tistory.com/

thinkpow의 이미지

앗 다시 서버에 로그인 해서 컴파일 하니 잘 되네요..

답변 주신분들 감사합니다... :lol:

mastercho의 이미지

가끔 위에 말씀 하신분의 경로 되로 되어 있지 않은 경우도 있습니다

그럴때는 find 명령으로 mysql.h 이거와 라이브러리 파일을 찾아서

경로를 정해줘야 하더군요

[제가 그랬습니다 :) ]

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

thinkpow의 이미지

Mysql 버젼이 4.x 이던데요..

역시 Mysql_connect()함수를 쓰면 컴파일이 안되고.

그런데 Mysql_Real_connect() 는 되네요.

그리고 INSERT INTO 문 쓸때 문자를 꼭 따옴표를 해 줘야지

에러가 안나네요..

이번에 서버를 구입해서 그런지 최신 버젼으로 깔아준것 같은데.

책에서 공부한것과 틀려서 많이 삽질했네요..

예전 버젼으로 까는게 좋을지 고민되네요..