23.8.4.3 Running C API Client Programs
업그레이드 후 컴파일 된 클라이언트 프로그램에 「
또는 예기치 않은 코어 덤프 등의 문제가 발생하면 프로그램이 이전 헤더 파일이나 라이브러리 파일을 사용하여 컴파일 된 수 있습니다. 이 경우 컴파일에 사용 된 Commands out of sync
」mysql.h
파일 및 libmysqlclient.a
라이브러리의 날짜를 확인하고 그들이 새로운 MySQL 배포판에서 것임을 확인합니다. 그렇지 않은 경우에는 프로그램을 새로운 헤더 및 라이브러리에서 다시 컴파일합니다. 라이브러리의 주 버전 번호가 변경된 ( libmysqlclient.so.17
에서 libmysqlclient.so.18
등) 경우 공유 클라이언트 라이브러리에 컴파일 된 프로그램으로 재 컴파일이 필요할 수 있습니다.
주요 클라이언트 라이브러리 버전에 따라 호환성이 달라집니다. (예를 들어, libmysqlclient.so.18.1.0
의 경우 주 버전은 18입니다.) 따라서 새로운 버전의 MySQL에 포함 된 라이브러리는 같은 메이저 번호와 이전 버전의 쉽게 교체 가능한 대안입니다. 메이저 라이브러리 버전이 같은가 라이브러리를 업그레이드 할 이전 응용 프로그램은 그와 함께하고 있습니다.
MySQL 프로그램을 실행하려고하면 런타임에 정의되지 않은 참조 오류가 발생할 수 있습니다. 이러한 오류에 mysql_
로 시작 심볼이 지정되어 있거나 libmysqlclient
라이브러리를 찾을 수 없음을 표시하는 경우, 그것은 시스템이 공유 libmysqlclient.so
라이브러리를 찾을 수없는 것을 의미합니다. 이 문제의 해결 방법은 시스템에 라이브러리가있는 디렉토리에서 공유 라이브러리를 검색하도록 전달하는 것입니다. 다음 방법 중 사용하는 시스템에 적절한 방법을 사용합니다.
libmysqlclient.so
가있는 디렉토리 경로를LD_LIBRARY_PATH
또는LD_LIBRARY
환경 변수에 추가합니다.OS X에서는
libmysqlclient.dylib
이 존재하는 디렉토리의 경로를DYLD_LIBRARY_PATH
환경 변수에 추가합니다.공유 라이브러리 파일 (
libmysqlclient.so
등)을/lib
등 시스템에 의해 검색되는 여러 디렉토리에 복사하고ldconfig
를 실행하여 공유 라이브러리 정보를 업데이트합니다. 모든 관련 파일을 복사하십시오. 공유 라이브러리는 대체 이름을 제공하는 심볼릭 링크를 사용하여 여러 이름으로 존재 할 수 있습니다.
응용 프로그램이 임베디드 서버 라이브러리에 링크되어있는 경우 런타임 오류 메시지에 libmysqlclient
라이브러리가 아닌 libmysqld
가 표시되지만이 문제의 해결 방법은 설명한지 얼마 안된 것과 동일합니다.