美文网首页
在编译mysql或sqlite时出现问题的解决方法

在编译mysql或sqlite时出现问题的解决方法

作者: 雨打梨花闭门寒 | 来源:发表于2017-05-04 00:03 被阅读0次

    本文提到的这两个问题是我在编译时出现的问题,然后就是用本文提到的方法解决的,特意记下来方便以后查看。

    使用linux下的C操作MYSQL

    编译时提示头文件include <mysql/mysql.h>不存在的解决办法:

    先找到mysql.h文件在哪里,gcc test.c -o test -I /usr/lib/mysql/include -L /usr/lib/mysql/ -lmysqlclient 加‘-I’导向头文件mysql.h所在的文件目录
    

    解决可以尝试安装mysql-devel:

    $ sudo yum install mysql-devel -y    //RHEL,Centos,Fedora
    $ sudo apt-get install libmysqlclient-dev -y  //Ubuntu
    如果已经安装成功了,找到mysql.h的文件路径,-I 编译即可
    $ sudo  find /usr/ -name 'mysql.h'
    $ gcc -I/usr/include/mysql ...
    
    使用linux下的C操作SQLLITE

    由于linux下侧重使用命令,没有win的操作容易上手,所以在测试C操作SQLITE时会比较容易出现错误,给大家做一个简单的程序进行测试,演示怎么应用。

    #include <stdio.h>
    #include <sqlite3.h>
    int main( void )
    {
    sqlite3 *db=NULL;
    char *zErrMsg = 0;
    int rc;
    //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
    rc = sqlite3_open("zieckey.db", &db);
    if( rc )
    {
    fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
    sqlite3_close(db);
    exit(1);
    }
    else printf("You have opened a sqlite3 database named zieckey.db successfully!\nCongratulations! Have fun ! ^-^ \n");
    sqlite3_close(db); //关闭数据库
    return 0;
    }
    

    退出,保存。(代码输入完成后,按下 Esc 键,然后输入: :wq ,回车就好拉)

    编译:[root@localhost temp]# gcc opendbsqlite.c -o db.out
    或者遇到这样的问题:
    [root@localhost temp]# gcc opendbsqlite.c -o db.out
    opendbsqlite.c:11:21: sqlite3.h: 没有那个文件或目录
    opendbsqlite.c: In function `main':
    opendbsqlite.c:19: `sqlite3' undeclared (first use in this function)
    opendbsqlite.c:19: (Each undeclared identifier is reported only once
    opendbsqlite.c:19: for each function it appears in.)
    opendbsqlite.c:19: `db' undeclared (first use in this function)
    这是由于没有找到头文件的原因。
    也许会碰到类似这样的问题:
    [root@localhost temp]# gcc opendbsqlite.c -o db.out
    /tmp/ccTkItnN.o(.text+0x2b): In function `main':
    : undefined reference to `sqlite3_open'
    /tmp/ccTkItnN.o(.text+0x45): In function `main':
    : undefined reference to `sqlite3_errmsg'
    /tmp/ccTkItnN.o(.text+0x67): In function `main':
    : undefined reference to `sqlite3_close'
    /tmp/ccTkItnN.o(.text+0x8f): In function `main':
    : undefined reference to `sqlite3_close'
    collect2: ld returned 1 exit status
    这是个没有找到库文件的问题。
    [root@localhost temp]# gcc opendbsqlite.c -o db.out -lsqlite3 -L/usr/local/sqlite3/lib -I/usr/local/sqlite3/include
    

    这样编译应该就可以了。最后运行'./db.out'可执行文件。

    相关文章

      网友评论

          本文标题:在编译mysql或sqlite时出现问题的解决方法

          本文链接:https://www.haomeiwen.com/subject/altrtxtx.html