首页 > 代码库 > fcgi、fastcgi 交叉编译出现的错误总结
fcgi、fastcgi 交叉编译出现的错误总结
(1)fcgi
(2)mips、openwrt
(3)mv : cannot stat `libfcgi_la-fcgiapp.o‘: No such file or directory
(4)`alocal symbol‘ can not be used when making a shared object;
(5)recompile with -fPIC
(6)‘EOF‘ was not declared in this scope
(7)undefined reference to `frexp‘
正文:
1、执行configure,生成Makefile
./configure --build=i686-pc-linux-gnu(i486-gnu-linux) --host=mips-openwrt-linux(mipsel-linux) --prefix=$PWD/install(安装的目录) CC=gcc编译器的路径 CXX=g++编译器的路径 CFLAGS="-g -O2 -Wall -fPIC" CXXFLAGS="-g -O2 -Wall -fPIC" #绿色的在mips下可以不加(openwrt需要加)
2、make
(交叉编译工具链路径请根据情况指定)
3、make install,安装路径在编译路径的install目录下面
4.(1)遇到的问题:mv : cannot stat `libfcgi_la-fcgiapp.o‘: No such file or directory
(2)原因分析:意思是没有这个文件,原因是libtool里面执行这个文件之前,没有先生成这个文件。
(3)解决办法:修改libtool文件,找到867行(不同版本可能行数会有点不同),在then后面添加一行,make $output_obj
5.
(1)遇到的问题:
relocation R_MIPS_26 against`a local symbol‘ can not be used when making a shared object;
recompile with -fPIC
libfcgi_la-fcgiapp.lo:could not read symbols: Bad value
(2)原因分析:编译器提示需要添加 -fPIC 选项。但是在configure的时候添加比较方便。
(3)解决办法:在configure的时候添加CFLAGS和CXXFLAGS选项.
./configure --build=i686-pc-linux-gnu --host=mips-openwrt-linux --prefix=$PWD/install CFLAGS="-g -O2 -Wall -fPIC" CXXFLAGS="-g -O2 -Wall -fPIC"
6.
(1)遇到的问题: fcgio.cpp error: ‘EOF‘ was not declared in this scope
(2)原因分析:编译器版本有关
(3)解决办法:在报错文件的最开始加上 #include<stdio.h>
7.
(1)遇到的问题:undefined reference to `frexp‘
(2)原因分析:无法找到数学库(math)
(3)解决办法:先make clean,然后修改 libfcgi目录下的Makefile,在-LIBS那一行增加 -lm 参数
fcgi、fastcgi 交叉编译出现的错误总结