2012年4月24日星期二

cgi接口运行出现500错误

    在做一个cgi接口时,编译ok了,但是调用这个接口时始终显示500错误,请同事看说是程序用的mysql的库有问题(这怎么看出来的?以后研究一下),但是在编译程序的时候包含了正确的mysql库了,没搞懂。然后给同事看了一下,他把我的makefile改了一下:
g++ -Wl,-rpath,./lib a.h a.cpp b.cpp -o a$(INCLUDE) $(LIB)
加了-Wl,-rpath参数,然后就可以了。高啊。

在网上查了一下:
1)-Wl,<选项> 将逗号分隔的 <选项> 传递给链接器
2)-rpath选项来在编译时就指定库的查找路径,并且该库的路径信息保存在可执行文件中,运行时它会直接到该路径查找库,避免了使用LD_LIBRARY_PATH环境变量查找
加了这两个参数后,应该是把mysql的库编译到程序里面了。

对gcc的编译,我还处于初级阶段,只懂得皮毛,以后有机会学习一下。

另外cgi接口运行出现500错误的原因还有一种就是没有输出html头部信息,只要把头部信息加上就可以了。(printf("Content-type: text/html;charset=utf-8\n\n"); )
也有人说权限问题可能会造成500错误。

没有评论:

发表评论