2010-12-07 1 views
2

나는 MAC OSX를 사용하여 단지 로컬 데이터베이스에 대한 연결을 테스트하는 '테스트'msyql 응용 프로그램 작성하려고 해요 :왜 MAC OSX에서 간단한 mysql c 응용 프로그램을 컴파일 할 때 정의되지 않은 기호가 계속 표시됩니까?

#include <my_global.h> 
#include <mysql.h> 


int main(void) 
{ 
    MYSQL mysql; 

    mysql_init(&mysql); 
    mysql_options(&mysql, MYSQL_READ_DEFAULT_GROUP, "examplemysql"); 
    if(!mysql_real_connect(&mysql, "localhost", "someuser", "somepassword", "sampledb", 0, NULL, 0)) 
    { 
     fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(&mysql)); 
    } 

} 

내가 명령을 사용하여 컴파일의 gcc -I/usr/지방/mysql을을/포함 -L/usr/지방/mysql을/lib에 mysql.c

I 얻을에서 참조 다음과 같은 오류가

정의되지 않은 기호를
"_mysql_options": cceohP7E.o에
_main cceohP7E.o

_main :에서 참조 cceohP7E.o
"_mysql_error"에
_main :에서 참조 cceohP7E.o
"_mysql_init"에
_main :에서 참조 "_mysql_real_connect" LD : 기호가
collect2를 찾을 수 없습니다 LD 내가 더 C/유닉스 전문가는 아니지만, 내가 배우고 싶은 1 개 종료 상태

를 반환했습니다. 64 비트 아키텍처가 여기서 실행된다는 것을 알고 있습니다. 이 문제가 될 수 있습니까? 내가 뭘 잘못하고 있는지 알려줘.

감사합니다.

+0

링커에서 포함 헤더를 찾지 못하거나 올바른 헤더가 아닙니다.호출중인 함수가 해당 헤더에 정의되어 있는지 확인하십시오. – Falmarri

+0

헤더 파일을 통해 검색 중이며 정확하게 "_mysql_options"등을 찾을 수 없습니다. 이제 내 질문에 "_mysql_options"의 출처가 어디입니까? – EDJ

답변

3

, 당신은 라이브러리를 놓치고있어.

gcc `mysql_config --include` mysql.c `mysql_config --libs` 
+0

바로 가기에 감사드립니다. :) – EDJ

1

공유 라이브러리 libmysql.so에 링크해야합니다. 링커 오류로 인해 다른 심볼을 찾으려고합니다.

이런 식으로 뭔가 ... 다른 언급이

gcc -I/usr/local/mysql/include -L/usr/local/mysql/lib mysql.c -lmysql

+0

올바른 방향으로 나를 가리켜 주셔서 감사합니다. – EDJ

1

나는 그것이 나를 위해 어려웠다해서 ... OSX 라이온이 검색 사람이 대답을 통해 업데이트 : 다행히도, MySQL은 명령 줄의 mysql_config을 통해이 쉽습니다.

mysql_config는 하나의 옵션이거나 직접 gcc 플래그를 지정하는 것은 다른 것이지만 올바른 C 커넥터가 없으면 모두 실패합니다.

나는 사자 10.7.4 맥북 에어에 그리고 난 내가 http://ftp.dc.aleron.net/pub/mysql/Connector-C/

의 압축을 풉니에서 가져온 MySQL의 커넥터-C-6.0.2-osx10.5-x86-64bit.tar을 다운로드 한 모든 압축을 풉니 다/usr/local/bin,/usr/local/include 및/usr/lical/lib 디렉토리에 각각 012/mysqlapp mysqlapp.c -L/usr/local/lib -l mysqlclient -l -I/usr/local/include

mysqlapp.c는 mysql.h를 사용하며 모든 것이 잘 컴파일되고 실행된다. 원래 www.mysql.com에서 다운로드 한 커넥터가 제대로 작동하지 않습니다. 나는 그것으로 무슨 일이 일어 났는지 확신하지 못합니다.

관련 문제