>> Read Reply from No. 34540 article  
RE: mysql.. C에서 어떻게 쓰죠?

등록 2001-11-09 11:14:00     조회 1
이름 성찬    

		: mysql을 C에서 사용하고 싶습니다.
: 아래의 간단한 예제를 코딩했습니다.
:
: #include "/usr/local/mysql/include/mysql/mysql.h"
:
: int main(void)
: {
:         MYSQL mysql;
:
:         mysql_init(&mysql);
:         mysql_options(&mysql,MYSQL_OPT_COMPRESS,0);
:         mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"odbc");
:         if (!mysql_real_connect
: (&mysql,"host","user","passwd","database",0,NULL,0))
:         {
:                 fprintf(stderr, "Failed to connect to database: Error:
: %s", mysql_error(&mysql));
:         }
: }
:
: 그리고 /usr/local/mysql/lib/mysql/libmysqlclient.so 를 컴파일시에 같이
: link 시켰습니다.
:
: 그랬더니 컴파일은 잘 되는데, 실행시에 에러가 나네요
:
: ./loginbypass.cgi: error in loading shared libraries:
: libmysqlclient.so.10: cannot open shared object file: No such file or
: directory
:
: 무엇이 문제일까요?
:
: PHP를 이용한 프로그래밍 예제나 정보들은 많은데 C 관련 예제나 정보는 찾
: 기가 힘들군요. 고수분의 도움을 바랍니다.
 마침 요즘에.. c에서 mysql에 접근하는 부분을 짜고 있습니다.
 소스 맨 앞머리에 있는
 #include ...
 부분은 그냥
mysql/mysql.h
라고 하셔도 됩니다.
 단지, 컴파일 할때는
 -I/usr/local/mysql/include
 (소문자 엘L 아닙니다. 대문자 아이i 입니다.)
를 명시하시면 됩니다. (오히려 이게 더 일반적일 수 있습니다. )
 그리고 -L/usr/local/mysql/lib/mysql -lmysqlclient 라는 옵션도 추가 하셔야 합니다.
 여기까지는.. 이미 하셨던 내용이니까 이상은 없었을겁니다.
하지만.. 실제 구동을 시킬때 오류는??
 동적 라이브러리(동적공유라이브러리라고 해야 하나요?)를 사용하기 위해서는 시스템에
서 동적 라이브러리에 대한 경로를 알고 있어야 합니다. 보통 윈도계열이라면 windows/system .
. 이라는 곳에 dll 파일들이 있듯이 리눅스(혹은 다른 유닉스계열 시스템)에서도 동적라이
브러리들이 들어있는 경로가 있습니다. 보통은 /usr/lib 쪽에 있긴 하겠지만, 그 외에 추가 
되는 거라면 명시적으로 어디에 있다는 것을 알려줘야만 합니다.  리눅스라면? ---------------
 /etc/ld.so.conf
 파일을 열어 보세요.
이 파일에 있는 내용은 기본 라이브러리 경로외에 추가적으로 사용할 라이브러리 경로에 
대한 정보를 담고 있습니다. 여기에 mysql에서 사용하는 라이브러리의 경로를 추가하시면 
됩니다. 이번 경우라면,
 /usr/local/mysql/lib/mysql
 를 추가하시면 됩니다.
추가가 끝나면,
 ldconfig
 라는 명령으로 경로 설정한것을 재인식(?)시켜줍니다.
 리눅스가 아니거나 ld.so.conf 파일을 사용하지 않는다면?
---------------------------------------------------------
솔라리스의 경우라면... ld.so.conf 파일이 없습니다.
물론 ld.so 인가 하는게 있어서 동적 라이브러리를 로드시키는 부분이 있긴 하지만 리눅스
와 같이 편리(?)하지는 않더군요. 다른 방법이 있을지는 모르겠지만 전 찾지 못했습니다.
그래서 솔라리스에서는 LD_LIBRARAY_PATH 에 추가 시켜 주시면 됩니다.
추가한 내용을 적용하려면 재접속을 하거나 source 를 이용해서 리소스 파일을 다시 읽어들
이면 됩니다.  리눅스에서도 이 방법은 사용가능하긴 합니다.
 주의!!
컴파일 하는것은 컴파일시에 어디서 라이브러리를 가지고 올것인지에 대해서면 명시합니
다. 따라서 컴파일할때는 해보셨던것과 같이 명시적으로 어디에 있는것을 이용해서 쓰겠
다고 했기 때문에 별다른 문제 없이 컴파일은 가능합니다. 하지만, 프로그램을 구동할때는
 경로 정보를 가지고 있는게 아니기 때문에 기본 경로(혹은 지정한 경로)에서만 찾게 됩니
다. 위에 두가지 방법을 제시하긴 했지만, 아직까지 저도 헛갈리는 부분이기 때문에 테스
트하실때 옆에 메모하시면서 어떤 경우에 제대로 되는지 확인하셨으면 합니다.--리눅스를?
 써봐?
이름
암호


>> 관련글
34540 mysql.. C에서 어떻게 쓰죠?  x-treamer  2001.11.09  ....
  답장 RE: mysql.. C에서 어떻게 쓰죠?  성찬  2001.11.09  ....
Register [ localhost 목록보기 윗글 아랫글
글쓰기
답장쓰기 수정 삭제
정규표현식 [ 상세 검색 ]
페이지로딩: [ 0.74 초 ] 작업시간: [ 0.17 초 ]

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved
[TOP]

적수네 동네
+
| 적수네 동네
| 공부방
| 리눅스 잡지 서고
| LSN 소스
| 링크 모음
+---+
게시판
+
| 떠들어보세!
| 질문과 답변
| 새소식과 정보
| 1원짜리 팁?
| 대화방
+---+
칼럼?
+
| 세하 훔쳐보기
| Welcome2nite
| 혜진의 염장판
+---+
리눅스 상표권
+
| 반대 서명란
| 토론 게시판
+---+
GNU
+
| GNU 선언문
| GNU GPL
| GNU 미러 목록
+---+
프로젝트?
+
| 리눅스카운터
| RC5DES
| 실질헌법 제작
+---+
커널 소식
+
| 안정 버젼: 2.4.14
+---+
테마 선택
+
LSN 방송국?
+
| OFF AIR
+---+
회원
+
| 로그인
+---+
[ 적수네 동네 ] [ 리눅스 상표권 독점 반대 ] [ 한글 리눅스 문서 프로젝트 ] [ KrLine ] [ 사랑넷 ] [ Valid HTML 4.0! ] [ SlashDot ] [ Freshmeat ]
Copyleft (C) 1998-2001 Byeong-Chan Kim . License
TIME: 1789508985
System by WYZsoft, HDD by I.O.Linux, Mizi Research, Embryo, WOWLINUX, Domain by SarangNet, Network by KrLine.