1. mysql.h 라이브러리 다운로드

더보기

mysql.h 없을시 다운

sudo apt update;
sudo apt install libmysqlclient-dev build-essential -y;

 

  • libmysqlclient-dev
    C 애플리케이션에서 MySQL C API를 사용하기 위한 헤더·라이브러리 패키지입니다.
  • build-essential
    GCC 등 빌드 도구 모음입니다.

 

mysql.h 설치된 헤더 위치 찾는 명령어

mysql_config --cflags

 

2. mysql.h 라이브러리 살펴보기

더보기

1. mysql.h 포함된 C 소스코드 예시

#include <stdio.h>
#include <mysql/mysql.h>
// #include "/usr/include/mysql/mysql.h"
 
void main()
{
  printf("MySQL client version: %s\n", mysql_get_client_info());
  return;
}

 

 

 

 

2. mysql 헤더 사용 방법 1

:헤더 전체 경로 지정

#include "/usr/include/mysql/mysql.h"

 

 

 

 

3. mysql 헤더 사용 방법 2

: VSCode 경우, c_cpp_properties.json 에 /usr/include/mysql 를 includePath에 추가

{
  "configurations": [
    {
      "name": "Linux",
      "compilerPath": "/usr/bin/gcc",
      "cStandard": "c11",
      "cppStandard": "c++17",
      "includePath": [
        "${workspaceFolder}/**",
        "/usr/include/mysql"       // ← MySQL 헤더 경로 추가
      ...

 

 

 

 

4. c언어 mysql 라이브러리 빌드 방법


MySQL C API는 C언어 표준 라이브러리가 아닙니다.

MySQL C API는 MySQL 데이터베이스 서버와 통신하기 위해 MySQL에서 별도로 제공하는 라이브러리입니다.

 

빌드시 컴파일러와 링커가 를 제대로 찾고 연결하려면, 헤더 파일과 라이브러리 파일의 위치를 명시해 주어야 합니다

  • -I [헤더 파일(include)] 검색 경로 추가 
  • -L[라이브러리 디렉토리] 옵션 : 라이브러리 파일을 찾을 디렉토리를 지정한다. 
  • -l [링크(Link)] 할 특정 라이브러리를 지정한다.

 

3. mysql.h 라이브러리 포함, 빌드 명령 방법

더보기

1. mysql.h 포함된 C 소스코드 예시

#include <stdio.h>
#include <mysql/mysql.h>
// #include "/usr/include/mysql/mysql.h"
 
void main()
{
  printf("MySQL client version: %s\n", mysql_get_client_info());
  return;
}

 

 

 

 

2. 빌드 명령어

gcc 파일명.c -I/usr/include/mysql -L/usr/lib/x86_64-linux-gnu -lmysqlclient -o 실행파일명
gcc 파일명.c $(mysql_config --cflags) $(mysql_config --libs) -o 실행파일명

 

 

 

3. 빌드 명령어 - 상세(1)

gcc 파일명.c \
  -I/usr/include/mysql \
  -L/usr/lib/x86_64-linux-gnu \
  -lmysqlclient \
  -o 실행파일명
  • -I/usr/include/mysql
    • -I 로 헤더 경로 지정 → 컴파일 성공
    • #include <mysql/mysql.h> 같은 MySQL 헤더 파일을, 컴파일러에게 “헤더가 이 디렉토리에 있습니다”라고 알려줍니다.
  • -L/usr/lib/x86_64-linux-gnu
    • -L 로 라이브러리 경로 지정 → 링커가 libmysqlclient 찾음
    • MySQL 클라이언트 라이브러리(libmysqlclient.so)가 링크 시 .so(또는 .a) 파일을 시스템 기본 경로가 아닌 이 폴더에 설치돼 있기 때문에, 링커에게 “이 디렉토리도 뒤져 보세요”라고 알려주는 거죠.
  • -lmysqlclient
    • -l 로 mysqlclient 실제 연결 → 실행 가능한 mysql_app 생성
    • libmysqlclient.so 를 최종 실행 파일에 연결하라는 옵션



 

 

 

4. 빌드 명령어 - 상세(2)

gcc 파일명.c -o 실행파일명 \
    $(mysql_config --cflags) $(mysql_config --libs)
  • mysql_config --cflags : 컴파일 시 필요한 -I 경로
  • mysql_config --libs : 링크 시 필요한 -L/-l 옵션