在mipsel-linux平臺上的編譯應用SQLite-3.5.9
阿新 • • 發佈:2019-02-01
: "NULL");
}
printf("\n");
return 0;
}
int main(int argc, char **argv)
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
if (argc != 3) {
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
exit(1);
}
rc = sqlite3_open(argv[1], &db);
if (rc) {
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}
9、編譯test.c檔案
# mipsel-linux-gcc -I/work/dist-sqlite3/include -L/work/dist-sqlite3/lib -o test test.c -lsqlite3
有兩個針對 exit(1)的警告,未研究什麼原因。不過仍生成了可執行檔案。
三、在開發板上使用sqlite
1、將在Redhat上交叉編譯的/dist-sqlite3目錄拷到開發板中
[/mnt/yaffs] mount -t nfs -o nolock 192.168.0.108:/sqlite /host
如果出現連線超時等問題(我在除錯過程中出現此問題,主要是因為linux 在 VMWare虛擬機器上),把所有不用的網絡卡(含虛擬網絡卡)和多餘的IP地址禁用和刪除。
2、設定環境變數
[/host]export LD_LIBRARY_PATH=/host /lib:$LD_LIBRARY_PATH
[/host]export PATH=/host /bin/:$PATH
建議寫一個export.sh
[/mnt/yaffs/sqlite3.5.9]cat >export.sh
#!/bin/sh
export LD_LIBRARY_PATH=/host/lib:$LD_LIBRARY_PATH
export PATH=/host/bin/:$PATH
^C(ctrl+C)結束檔案
再執行export.sh輸出環境變數
[/mnt/yaffs/sqlite3.5.9]. ./export.sh(.空格 +./export.sh)
這時可以就可以在開發板上執行sqlite3了
不同的是,在聚芯開發板上,必須把要執行的命令寫在export.sh 指令碼中,也就是export在執行完指令碼後就立即失效了,此時再執行命令跟沒有執行指令碼一樣。
[/host]sqlite3
SQLite version 3.5.9
Enter ".help" for instructions
sqlite>
sqlite> create table tbl1(one varchar(10), two smallint);
sqlite> insert into tbl1 values('hello!',10);
sqlite> insert into tbl1 values('goodbye', 20);
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>
用.exit退出sqlite3。
3、執行測試程式
將test放到dist-sqlite3目錄下。至此test程式已經可以在開發板中執行。
[/host]./test
Usage: test DATABASE SQL-STATEMENT
[/mnt/yaffs]
本文來自ChinaUnix部落格,如果檢視原文請點:
}
printf("\n");
return 0;
}
int main(int argc, char **argv)
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
if (argc != 3) {
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
exit(1);
}
rc = sqlite3_open(argv[1], &db);
if (rc) {
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}
9、編譯test.c檔案
# mipsel-linux-gcc -I/work/dist-sqlite3/include -L/work/dist-sqlite3/lib -o test test.c -lsqlite3
有兩個針對 exit(1)的警告,未研究什麼原因。不過仍生成了可執行檔案。
三、在開發板上使用sqlite
1、將在Redhat上交叉編譯的/dist-sqlite3目錄拷到開發板中
[/mnt/yaffs] mount -t nfs -o nolock 192.168.0.108:/sqlite /host
如果出現連線超時等問題(我在除錯過程中出現此問題,主要是因為linux 在 VMWare虛擬機器上),把所有不用的網絡卡(含虛擬網絡卡)和多餘的IP地址禁用和刪除。
2、設定環境變數
[/host]export LD_LIBRARY_PATH=/host /lib:$LD_LIBRARY_PATH
[/host]export PATH=/host /bin/:$PATH
建議寫一個export.sh
[/mnt/yaffs/sqlite3.5.9]cat >export.sh
#!/bin/sh
export LD_LIBRARY_PATH=/host/lib:$LD_LIBRARY_PATH
export PATH=/host/bin/:$PATH
^C(ctrl+C)結束檔案
再執行export.sh輸出環境變數
[/mnt/yaffs/sqlite3.5.9]. ./export.sh(.空格 +./export.sh)
這時可以就可以在開發板上執行sqlite3了
不同的是,在聚芯開發板上,必須把要執行的命令寫在export.sh 指令碼中,也就是export在執行完指令碼後就立即失效了,此時再執行命令跟沒有執行指令碼一樣。
[/host]sqlite3
SQLite version 3.5.9
Enter ".help" for instructions
sqlite>
sqlite> create table tbl1(one varchar(10), two smallint);
sqlite> insert into tbl1 values('hello!',10);
sqlite> insert into tbl1 values('goodbye', 20);
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>
用.exit退出sqlite3。
3、執行測試程式
將test放到dist-sqlite3目錄下。至此test程式已經可以在開發板中執行。
[/host]./test
Usage: test DATABASE SQL-STATEMENT
[/mnt/yaffs]
本文來自ChinaUnix部落格,如果檢視原文請點: