假設你已經正確編譯和安裝了Sqlite,寫個測試程序來測試:
          #include <stdlib.h>
          #include <stdio.h>
          #include "sqlite3.h"

          int main(void)
          {
              sqlite3 *db=NULL;
              char *zErrMsg = 0;
              int rc;
              rc=sqlite3_open("test1.db",&db);
              if(rc)
              {
                  fprintf(stderr,"Can't open database: %s\n",sqlite3_errmsg(db));
                  sqlite3_close(db);
                  exit(1);
              }
              else printf("open mydata successfully!\n");
              sqlite3_close(db);
              return 0;
          }

          用GCC來編譯的時候總是會出現錯誤,編譯的命令如下
          gcc -static -o hello -lsqlite3 -L /usr/local/lib -I/usr/local/include hello.c
          錯誤信息如下
          /tmp/ccKeKpX9.o(.text+0x37): In function `main':
          : undefined reference to `sqlite3_open'
          /tmp/ccKeKpX9.o(.text+0x51): In function `main':
          : undefined reference to `sqlite3_errmsg'
          /tmp/ccKeKpX9.o(.text+0x73): In function `main':
          : undefined reference to `sqlite3_close'
          /tmp/ccKeKpX9.o(.text+0x9b): In function `main':
          : undefined reference to `sqlite3_close'
          collect2: ld returned 1 exit status

          那么,恭喜你中招了。錯誤根本不在SQLITE也不在你的程序,而在GCC。Gcc的編譯參數是有順序的。正確的編譯命令是:
          gcc -o hello -L /usr/local/lib -I/usr/local/include -static hello.c -lsqlite3

          說實話,這么的一個小問題困擾了我一天的時間!真是菜啊~~~~~~


          posted on 2013-01-10 14:05 姚先進 閱讀(2274) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
           
          主站蜘蛛池模板: 都匀市| 香格里拉县| 吉安市| 三台县| 昌都县| 昭通市| 朝阳区| 长阳| 天祝| 青海省| 武强县| 墨脱县| 白水县| 时尚| 枣阳市| 深水埗区| 宣城市| 遂溪县| 崇信县| 广丰县| 扬中市| 襄城县| 景洪市| 萨嘎县| 宁明县| 昆明市| 小金县| 营山县| 滨州市| 临泉县| 阳曲县| 浦北县| 高台县| 芮城县| 宁南县| 庆安县| 澄城县| 乐亭县| 凌云县| 和静县| 南康市|