• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 1. MySQL Connector / ODBC
    2. MySQL Connector/Net
    3. MySQL Connector/J
    4. MySQL Connector/C++
    5. MySQL Connector/C
    6. MySQL Connector/Python
    7. libmysqld, the Embedded MySQL Server Library
    8. MySQL C API
    1. MySQL C API 구현
    2. MySQL Server MySQL Connector/C 동시 설치
    3. C API 클라이언트 프로그램 예제
    4. Building and Running C API Client Programs
    1. C API 클라이언트 프로그램 구축
    2. C API Threaded Client Program 작성
    3. Running C API Client Programs
    4. C API Server and Client Library Versions
    5. C API Data 구조
    6. C API Function 개요
    7. C API Function 설명
    8. C API Prepared Statements
    9. C API Prepared Statement Data 구조
    10. C API Prepared Statement 함수 개요
    11. C API Prepared Statement 함수 설명
    12. C API Threaded 함수 설명
    13. C API 임베디드 서버 함수 설명
    14. C API Client Plugin 함수
    15. C API를 사용하는 경우 일반적인 질문과 문제
    16. 자동 재 연결 동작 제어
    17. 여러 명령문 실행 C API 지원
    18. C API Prepared Statement 문제
    19. C API Prepared Statement date 및 time 값 처리
    20. C API의 Prepared CALL Statements 지원
    9. MySQL PHP API
    10. MySQL Perl API
    11. MySQL Python API
    12. MySQL Ruby APIs
    13. MySQL Tcl API
    14. MySQL Eiffel Wrapper
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

23.8.4.1 C API 클라이언트 프로그램 구축

이 섹션에서는 MySQL C API를 사용하는 C 프로그램의 컴파일 지침을 제공합니다.

Unix에서 MySQL 클라이언트의 컴파일

MySQL 헤더 파일을 사용하는 클라이언트 프로그램의 컴파일시에 컴파일러가 그들을 찾을 수 있도록 -I 옵션을 지정할 필요가있을 수 있습니다. 예를 들어, 헤더 파일이 /usr/local/mysql/include 에 설치되어있는 경우 컴파일 명령에이 옵션을 사용합니다.

-I/usr/local/mysql/include

링크 명령에서 -lmysqlclient 옵션을 사용하여 MySQL 클라이언트를 링크해야합니다. 링커에 라이브러리를 찾을 위치를 전달하기 위해 -L 옵션을 지정해야하는 경우도 있습니다. 예를 들어, 라이브러리가 /usr/local/mysql/lib 에 설치되어있는 경우 링크 명령에이 옵션을 사용합니다.

-L/usr/local/mysql/lib -lmysqlclient

경로 이름은 사용하는 시스템에서 다를 수 있습니다. 필요에 따라 -I 옵션과 -L 옵션을 조정하십시오.

Unix에서 MySQL 프로그램의 컴파일을 쉽게하려면 mysql_config 스크립트를 사용합니다. 섹션 4.7.2 "mysql_config - 클라이언트 컴파일 용 옵션보기" 를 참조하십시오.

mysql_config는 컴파일 및 링크에 필요한 옵션을 표시합니다.

shell> mysql_config --cflags
shell> mysql_config --libs

그 명령을 실행하여 올바른 옵션을 취득하고이를 수동으로 컴파일 또는 링크 명령에 추가 할 수 있습니다. 또는 mysql_config의 출력을 역 인용 부호를 사용하여 명령 행에 직접 포함합니다.

shell> gcc -c `mysql_config --cflags` progname.c
shell> gcc -o progname progname.o `mysql_config --libs`
Microsoft Windows에서 MySQL 클라이언트의 컴파일

헤더 및 라이브러리 파일의 위치를​​ 지정하려면 개발 환경에서 제공되는 기능을 사용합니다.

Windows에서 C API 클라이언트를 구축하려면 C 클라이언트 라이브러리 외에도 Windows ws2_32 소켓 라이브러리 및 Secur32 보안 라이브러리에 링크해야합니다.

Windows에서 코드를 동적 또는 정적 C 클라이언트 라이브러리와 링크 할 수 있습니다. 정적 라이브러리는 mysqlclient.lib 라는 이름으로 동적 라이브러리 libmysql.dll 라는 이름입니다. 또한 동적 라이브러리를 사용하기 위해 libmysql.lib 정적 임포트 라이브러리가 필요합니다.

정적 라이브러리와 링크하는 경우 이러한 상황이 충족되지 않으면 오류가 발생할 수 있습니다.

  • 클라이언트 응용 프로그램은 라이브러리를 컴파일하는 데 사용되는 Visual Studio 동일한 버전으로 컴파일해야합니다.

  • 클라이언트 응용 프로그램은 /MT 컴파일러 옵션을 사용하여 C 런타임 정적으로 링크하십시오.

클라이언트 응용 프로그램이 디버그 모드에서 구축 된 정적 디버그 C 런타임을 사용하는 ( /MTd 컴파일러 옵션) 경우 mysqlclient.lib 정적 라이브러리가 동일한 옵션을 사용하여 구축 된 경우에, 거기에 링크 할 수 있습니다. 클라이언트 응용 프로그램이 동적 C 런타임을 사용 ( /MD 옵션 또는 디버그 모드에서 /MDd 옵션) 경우 그것을 libmysql.dll 동적 라이브러리에 링크해야합니다. 그것은 정적 클라이언트 라이브러리에 링크 할 수 없습니다.

링크 옵션에 대해 설명하는 MSDN 페이지는 http://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx 에 있습니다.

MySQL 클라이언트 라이브러리에 링크 문제 해결

MySQL 5.6에서 MySQL 클라이언트 라이브러리에 SSL 지원이 포함되어 포함되어 있습니다. 응용 프로그램에서 링크시 OpenSSL 라이브러리에서 -lssl 또는 -lcrypto 이 필요한 경우 -lmysqlclient 전에 그들을 지정해야합니다.

링커가 MySQL 클라이언트 라이브러리를 찾을 수없는 경우 여기에서와 같이, mysql_ 로 시작 심볼 정의되지 않은 참조 오류가 나타날 수 있습니다.

/tmp/ccFKsdPa.o: In function `main':
/tmp/ccFKsdPa.o(.text+0xb): undefined reference to `mysql_init'
/tmp/ccFKsdPa.o(.text+0x31): undefined reference to `mysql_real_connect'
/tmp/ccFKsdPa.o(.text+0x69): undefined reference to `mysql_error'
/tmp/ccFKsdPa.o(.text+0x9a): undefined reference to `mysql_close'

이 문제는 링크 명령의 끝에 -L dir_path -lmysqlclient 을 추가하여 해결할 수 있습니다. 여기에서 dir_path 은 클라이언트 라이브러리가 존재하는 디렉토리의 경로 이름을 나타냅니다. 올바른 디렉토리를 확인하려면이 명령을 시도합니다.

shell> mysql_config --libs

mysql_config의 출력에 연결 명령에 동일하게 지정해야 다른 라이브러리가 표시 될 수 있습니다. 컴파일 또는 링크 명령에 반대 따옴표를 사용하여 mysql_config 출력을 직접 포함 할 수 있습니다. 예 :

shell> gcc -o progname progname.o `mysql_config --libs`

링크시 floor 기호가 정의 할수 없다는 에러가 발생했을 경우, 컴파일 / 링크 줄 끝에 -lm 을 추가하여 수학 라이브러리에 링크합니다. 마찬가지로, connect() 등의 시스템에 존재하고 있어야 다른 함수의 정의되지 않은 참조 오류를받은 경우에는 문제의 함수의 매뉴얼 페이지를 확인하고 링크 명령에 추가 할 라이브러리를 판단 합니다.

시스템에 존재하지 않는 함수의 다음과 같은 정의되지 않은 참조 오류를받은 경우, 일반적으로 MySQL 클라이언트 라이브러리를 사용하는 시스템과 100 % 호환되지 않는 시스템에서 컴파일 된 것을 의미합니다.

mf_format.o(.text+0x201): undefined reference to `__lxstat'

이 경우, 최신의 MySQL 또는 MySQL Connector / C 소스 배포판을 다운로드하고 스스로 MySQL 클라이언트 라이브러리를 컴파일하십시오. 섹션 2.9 "소스에서 MySQL 설치" 및 MySQL Connector / C Developer Guide 를 참조하십시오.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved