안녕하세요...
컴파일 할 대 주는 -I -L은 include와 library의 위치를 잡아주는 옵션 입니다.
예를 들어 만약 mysql.h의 full path가
'/usr/local/mysql/include/mysql/mysql.h'과 같다면은
'-I/usr/local/mysql/include/mysql'옵션을 주면은 main program에서 include시에 full path없이 #include "mysql.h" 만으로도 include가 가능합니다.
물론 라이브러리도 같은 원리 입니다.
그러니깐 컴파일시에는 아래와 같은 옵션을 주면은 컴팡리이 됩니다.
$ gcc test.c -o test -lnsl -I/usr/local/mysql/include/mysql
-L/usr/local/mysql/lib/mysql -lmysqlclient
하시면은 컴팡리이 됩니다.
근데 linux machine에서는 -lsocket이 되는 것이 있고 않되는 것이 있는데 이건 상관이 없는 듯합니다. 그러나 unix machine에서는 아마도 이걸 붙혀 줘야 할 겁니다.
> 안냐세요~~저는 데이터베이스를 공부할려는 초보입니다!
> 제가 이전에 C언어와 CGI를 배웠기 때문에 C언어로 mysql과 연동하여
> 방명록과 게시판을 만들려구하는데...c파일이 컴파일이 잘안돼는군요!
> 컴파일을 이렇게 했는데...
>
> gcc -L/usr/local/mysql/lib -I/usr/local/mysql/include -o test test.c -lmysql
> -lnsl -lsocket 엔터
>
> 이렇게 하니 아래 글이 뜨고 컴파일이 안되더라구요!
>
> /usr/bin/ld: cannot find -lmysql
> collect2: ld returned 1 exit status
>
> 혹시 파일내용이 궁금하실까봐 올립니다!
> 할수있으시면 컴파일 옵션을 상세히 좀 갈켜주시겠읍니까?
> ********(-L은뭐고 그뒤에 경로들은 무엇인지 궁금합니다~~)
>
> 이파일은 그냥 테이블내용을 출력하는 연습용 파일입니다!
>
> -test.c-
> #include<sys/time.h>
>
> #include<stdio.h>
>
> #include</usr/include/mysql/mysql.h>
>
>
>
> int main(char **args){
>
> MYSQL_RES *result;
>
> MYSQL_ROW row;
>
> MYSQL *connection,mysql;
>
> int state;
>
> mysql_init(&mysql);
>
> connection=mysql_real_connect(&mysql,"","","","test",0,"",0);
>
> if(connection==NULL){
>
> printf(mysql_error(&mysql));
>
> return 1;
>
> }
>
> state=mysql_query(connection,"SELECT name,title FROM member");
>
> if(state!=0){
>
> printf(mysql_error(connection));
>
> return 1;
>
> }
>
> result=mysql_store_result(connection);
>
> printf("rows : %d
",mysql_num_rows(result));
>
> while((row=mysql_fetch_row(result))!=NULL){
>
> printf("name: %s, title: %s
", (row[0] ? row[0] : "NULL"),(row[1] ? row[1] : "NULL"));
>
> }
>
> mysql_free_result(result);
>
> mysql_close(connection);
>
> printf("Done.
");
>
> }
>
|