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를 사용할 필요가 없습니다.