My Own Style

반응형
  • 요구사항 : 임베디드 리눅스 장비에서 sqlite3 db 를 사용하기 위한 크로스컴파일된 .so 파일 필요

  • 작업내용
      • sqlite3 크로스 컴파일의 경우, 특별한 의존성이 존재하지 않음
      • sqlie3 홈페이지 (https://sqlite.org)에서 소스 다운로드 (sqlite-autoconf-3290000.tar.gz)
      • /home/$USER/cross_compile_src, /home/$USER/cross_root 경로를 이용
      • /home/$USER/cross_compile_src 경로에  위의 소스 위치 시킴
      • 압축해제 
        tar -xzvf sqlite-autoconf-3290000.tar.gz
      • cd sqlite-autoconf-3290000
      • $ ./configure CC=arm-hisiv400-linux-gnueabi-gcc --host=arm-hisiv400-linux-gnueabi --prefix=/home/sjlim5092/cross_root/
        $ make
        $ make install

      • gcc -o test_sql test.c -I /home/sjlim5092/cross_root/include/ -L /home/sjlim5092/cross_root/lib -lsqlite3
      • C 언어 테스트 코드 작성 (test_sql.c)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "sqlite3.h"
     
    int create_table()
    {
        sqlite3 *db;        // database connection
        int rc;             // return code
        sqlite3_stmt *stmt;
     
        char* query = "CREATE TABLE data (id INTEGER PRIMARY KEY, "
                               "key_string TEXT CHECK(typeof(key_string)='text'), "
                               "group_mask INTEGER CHECK(typeof(group_mask)='integer'), "
                               "lp_text TEXT CHECK(typeof(lp_text)='text'), country TEXT CHECK(typeof(country)='text'));";
     
        rc = sqlite3_open(SQL_DB_PATH, &db);
        if (rc != SQLITE_OK) {
            printf("[%s] ERROR opening SQLite DB : %s\n", __func__, sqlite3_errmsg(db));
            goto out;
        }
     
        //create basic_facedata
        sqlite3_prepare_v2(db, query, -1&stmt, NULL);
        rc = sqlite3_step(stmt);
        if (rc != SQLITE_DONE) {
            printf("[%s] ERROR create table: %s\n", __func__, sqlite3_errmsg(db));
            goto out;
        }
     
        sqlite3_finalize(stmt);
        sqlite3_close(db);
        printf("facedata table created.\n");
     
        return 1;
     
    out:
        if(stmt)
            sqlite3_finalize(stmt);
        if(db)
            sqlite3_close(db);
     
        return 0;
    }
     
    int main()
    {
        int ret = 0;
        ret = create_table();
        if(ret == 0)
        {
            printf("\e[33m failed...."\e[0m\n");
            return 0;
        }
        return 1;
    }
    cs

gcc -o test_sql test.c -I /data2/sjlim87/cross_root/include/ -I /data2/sjlim87/cross_compile_src/test_src/sqlite_test/ -L /data2/sjlim87/cross_root/lib -lsqlite3

gcc -o test_sql test.c -I /data2/sjlim87/cross_root/include/ -I /data2/sjlim87/cross_compile_src/test_src/sqlite_test/ -L /data2/sjlim87/cross_root/lib -lsqlite3

반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band