在ubuntu中安装arm-linux-gcc-4.3.2
1.把arm-linux-gcc-4.3.2压缩文件拷贝到tmp文件夹下面
(arm 文件夹是自己建立的在终端使用命令 mkdir arm建立注意是在 /usr/local/目录下)
解压的时候 tar zxvf arm-linux-gcc-4.3.2 -C / c要大些而且后面还有一个空格,否则解压过程中会自动的建立目录/usr/local/arm/
2.修改配置文件,就是建立路径 打开/etc/bashrc文件(linux下的系统环境变量) ,(如果不能修改应该是权限问题,修改权限就行,chmod命令进行修改)在文件的末尾加上export PATH=$PATH:/usr/local/arm/
4.3.2/bin 亲中4.3.2文件夹是我解压之后的文件夹, 到此就完成了安装。
3.测试 arm-linux-gcc -v 查看到了版本的就表示安装成功
说明: 本人初学,不是很懂。看到网上交叉编译方法很多,简易各不相同,如有不同或者错误请多指点!!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sqlite3.h>
#include "cgic.h"
int cgiMain()
{
printf("Content-Type:text/html\n\n");
printf("<html>");
printf("<p>hello</p>");
printf("</html>");
char username[241];
char password[241];
cgiHeaderContentType("text/html");
cgiFormString ( "username" , username , 10 );
cgiFormString ( "password" , password , 10 );
fprintf ( cgiOut , "<html><h2>%s</h2>" , username );
fprintf ( cgiOut , "<h2>%s</h2></html>" , password );
sqlite3 *db =NULL;
char *zErrMsg =0;
int rc;
int i=0;
int n=0;
rc = sqlite3_open("test.db",&db);
if(rc)
{
fprintf(stderr,"cannot open the database:%s\n",sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
else
printf("opened the database successfuly\n");
char *sql = "create table user( name , password );";
sqlite3_exec(db , sql , 0 , 0 , &zErrMsg );
sql = "insert into user values( 'yaonou' , 2007 );"; 如果用这行 注释掉snprintf 着可以编译运行 操作数据库
// char *sqls ;
// snprintf ( sql , sizeof(sql) , "insert into user values( %s , %s );" , username ,password ); 如果换成这一行的时候 boa服务器显示502 错误 为什么??、
// printf ( "%s" , username );
// printf ( "%s" , password );
printf ( "%s" , sql );
n = sqlite3_exec( db , sql , 0 ,0 , &zErrMsg );
if( n == SQLITE_OK)
{ printf( "it have done " );
printf( "%s",zErrMsg );
}
else
printf("it has not running");
sql = "select * from user;";
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
if( n == SQLITE_OK)
{ printf( "it have done " );
printf( "%s",zErrMsg );
}
else
printf( "select failed" );
int sqlite3_get_table(sqlite3* , const char *sql , char***result , int *nrow , int *ncloumn , char **errmsg );
int nrow=0;
int ncloumn=0;
char **firstResult;
sql = "select * from user;";
printf("\n");
sqlite3_get_table( db , sql , &firstResult , &nrow , &ncloumn , &zErrMsg );
if( n == SQLITE_OK)
{ printf( "it have done " );
}
else
printf( "select failed again " );
printf( "%s",zErrMsg );
printf( "row:%d cloumn:%d\n" , nrow , ncloumn );
printf( "the result of querying is :\n" );
for( i=0 ; i<( nrow + 1 ) * ncloumn ; i++ )
printf( "firstResult[%d]= %s\n" , i , firstResult[i] );
sqlite3_free_table( firstResult );
sql = "update user set password = 'yaxianjin' where name = 'yaonou';";
printf( "\n" );
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
nrow=0;
ncloumn=0;
char **secondResult;
sql = "select * from user;";
sqlite3_get_table( db , sql , &secondResult , &nrow , &ncloumn , &zErrMsg );
printf("<html>\n");
printf("<head><title>SQLITE CGI </title></head>\n");
printf("<body>");
printf("<h1>hello<h1>\n");
printf("<p>\n");
printf("<p>\n");
printf( "row:%d cloumn:%d\n" , nrow , ncloumn );
printf( "the result of querying is :\n" );
for( i=0 ; i<(nrow+1)*ncloumn ; i++ )
printf( "secondResult[%d]=%s\n" , i , secondResult[i] );
sqlite3_free_table( secondResult );
printf( "\n" );
sqlite3_close( db );
return 0;
}
难道 snprintf 和sqlite 不能兼容 还是有什么错误 ?
而且我单独 利用snprintf编程的时候是可以成功的
cgic 与sqlite 是否可以兼容 我很困惑 我写了一段代码 可以编译成cgi 但是有一部分的代码却不运行!!
望高手指点一二!
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
#include <string.h>
#include "cgic.h"
int cgiMain() {
sqlite3 *db=NULL;
char *zErrMsg=0;
int rc;
int i=0;
cgiHeaderContentType("text/html");
fprintf(cgiOut, "<HTML><HEAD>\n");
fprintf(cgiOut, "<TITLE>cgic test</TITLE></HEAD>\n");
fprintf(cgiOut, "<H1>ggfgdfdffh</H1>");
rc=sqlite3_open("test.db",&db);
if(rc)
{
fprintf(stderr,"can't open database:%s\n",sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
else
printf("open the database successfully!\n");
/*char *sql="create table user(name,password);";
sqlite3_exec(db,sql,0,0,&zErrMsg);*/
char*sql="insert into user values('yqp',2009213939);";
sqlite3_exec(db,sql,0,0,&zErrMsg); /* 但是这里的插入操作没有对数据库进行操作
printf("sql"); /*可以输出 sql
sqlite3_close(db);
return 0;
fprintf(cgiOut,"</BODY></HTML>");
}
编译没有问题!!求指点