23.8.1 MySQL C API 구현
MySQL C API는 C로 작성된 클라이언트 응용 프로그램이 MySQL 서버와의 통신에 사용할 수있는 C 기반의 API입니다. 클라이언트 프로그램은 컴파일시에 C API 헤더를 참조 링크시 C API 라이브러리 파일에 링크합니다. 라이브러리는 응용 프로그램이 서버와 어떻게 의사 소통을 의도하는지에 따라 두 가지 버전으로 제공되고 있습니다.
libmysqlclient
: 독립형 서버 프로세스의 클라이언트로 네트워크 연결을 통해 통신하는 응용 프로그램에서 사용되는 라이브러리 클라이언트 버전.libmysqld
: 응용 프로그램 자체에 내장 MySQL 서버를 포함하는 것을 목적으로 한 응용 프로그램에서 사용되는 라이브러리의 임베디드 서버 버전. 응용 프로그램은 자체 사설 서버 인스턴스와 통신합니다.
두 라이브러리도 같은 인터페이스를 가지고 있습니다. C API 호출에 대한 응용 프로그램은 임베디드 서버와 통신하는 동일한 방식으로 독립형 서버와 통신합니다. 특정 클라이언트를 구축 할 때 libmysqlclient
에 링크하거나 libmysqld
에 링크하는 여부에 따라 독립형 또는 임베디드 서버와 통신하도록 만들 수 있습니다.
C API 클라이언트 프로그램의 구축에 필요한 C API 헤더 및 라이브러리 파일을 검색하려면 두 가지 방법이 있습니다.
MySQL 서버 배포를 설치합니다. 서버 배포는
libmysqlclient
와libmysqld
가 모두 포함되어 있습니다.MySQL Connector / C 배포를 설치합니다. Connector / C 배포는
libmysqlclient
만 포함됩니다. 그들에게libmysqld
은 포함되지 않습니다.
MySQL 서버와 MySQL Connector / C에서 모두 사전 구축 된 C API 파일을 포함한 바이너리 배포판을 설치하거나 소스 배포판을 사용하여 자신의 C API 파일을 만들 수 있습니다.
일반적으로 MySQL 서버 배포 또는 MySQL Connector / C 배포 중 하나를 설치하고 둘은 설치하지 않습니다. MySQL 서버와 MySQL Connector / C의 동시 설치에 따른 문제에 대해서는 섹션 23.8.2 "MySQL 서버와 MySQL Connector / C의 동시 설치" 를 참조하십시오.
C API 클라이언트 응용 프로그램의 링크시에 사용하는 라이브러리 파일의 이름은 라이브러리의 종류와 배포가 구축되는 플랫폼에 따라 다릅니다.
Unix (및 Unix와 유사한) 시스템에서 정적 라이브러리는
libmysqlclient.a
입니다. 동적 라이브러리는 대부분의 Unix 시스템에libmysqlclient.so
및 OS X에서libmysqlclient.dylib
입니다.임베디드 서버 라이브러리가 포함 된 메일의 경우 해당 라이브러리 이름은
libmysqlclient
대신libmysqld
에서 시작됩니다.Windows에서 정적 라이브러리는
mysqlclient.lib
에서 동적 라이브러리libmysql.dll
입니다. Windows 배포는 동적 라이브러리를 사용하는 데 필요한 정적 임포트 라이브러리libmysql.lib
도 포함되어 있습니다.임베디드 서버 라이브러리가 포함 된 메일의 경우 해당 라이브러리 이름은
mysqlserver.lib
,libmysqld.dll
및libmysqld.lib
입니다.Windows 배포는 일련의 디버그 라이브러리도 포함됩니다. 이들은 비 디버그 라이브러리와 같은 이름을 가지고 있지만
lib/debug
라이브러리에 저장됩니다. 디버그 C 런타임을 사용하여 구축 된 클라이언트를 컴파일 할 때 디버깅 라이브러리를 사용해야합니다.
Unix에서는 이름에 _r
을 포함하는 라이브러리도 볼 수 있습니다. MySQL 5.5 이전에는 이러한 비 _r
라이브러리와는 별도로 스레드 안전 (재진입) 라이브러리로 구축되었습니다. 5.5 이상 두 라이브러리가 동일하며 _r
이름은 해당 비 _r
이름에 심볼릭 링크됩니다. _r
라이브러리를 사용할 필요가 없습니다. 예를 들어, mysql_config을 사용하여 링커 플래그를 취득하는 경우, 스레드 클라이언트에서도 모든 경우에 mysql_config --libs을 사용할 수 있습니다. mysql_config --libs_r를 사용할 필요가 없습니다.