引用的apr库文件路径和头文件路径获得过程是执行
安装目录的bin目录下:cd /usr/local/apr/bin
获得头文件路径:./apr-1-config includes
获得库连接路径:./apr-1-config -link-ld -libs
获得符号编译:./apr-1-config -cflags
获得连接符号:./apr-1-config -ldflags
1.1 在windows下编译跟踪调试的过程:
原因:由于在linux下面执行编译结果时总是无法顺利建立连接,于是将程序导入到widows下面用visual studio 2008来编译调试。
1.1.1 编译apr库文件。
A. 将从官网下载的widows下的apr-1.4.2源码压缩包解压
B. 打开visual studio 2008->文件->打开->项目解决方案,找到解压的apr-1.4.2文件夹钻则项目文件,经过系统转化打开
C. 在解决方案资源管理器中,鼠标点到libapr项目上,然后鼠标右击生成,声称成功。
D. 找到生成的库文件libapr-1.dll和libapr-1.lib
1.1.2 编写Makefile文件
A. 首先编写好基本的目标依赖关系
B. 进入到apr的安装目录下,执行cd bin 之后执行
./apr-1-config includes
./apr-1-config -link-ld -libs
./apr-1-config -cflags
./apr-1-config -ldflags
以此获取链接需要的头文件,库文件等信息,之后将这些信息加入到Makefile相对应的命令中。
C. 由于.c源文件中有C++中才定义方法和类型的出现,因此必须使用g++命令。
1.1.3 搭建所需要的apr库环境。(mipsel-linux交叉编译环境(此处为sigma平台))
(1)解压tar -zxvf apr_1.3.9.tar.gz
(2) ./configure --prefix=/apr --host=mipsel-linux ac_cv_file_dev_zero="yes" \
ac_cv_file__dev_zero="yes" \
ac_cv_func_setpgrp_void="yes" \
ac_cv_func_setpgrp_void="yes" \
apr_cv_process_shared_works="yes" \
apr_cv_mutex_robust_shared="no" \
apr_cv_tcp_nodelay_with_cork="yes" \
ac_cv_sizeof_struct_iovec="8" \
apr_cv_mutex_recursive="yes"
(3)make
(4)make install
1.1.4 搭建所需要的apr库环境。(mipse-linux交叉编译环境(此处为mstar平台))
[root@ MFSGuest ~]# cd apr-1.3.9
./configure CC=mips-linux-gnu-gcc CFLAGS="-EL -msoft-float" LDFLAGS="-EL -msoft-float" --prefix=/home/mstar/aprinstall --host=mips-linux-gnu ac_cv_c_bigendian=no ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes apr_cv_process_shared_works=yes apr_cv_mutex_robust_shared=yes apr_cv_tcp_nodelay_with_cork=yes
之后修改libtool脚本文件中的214行
archive_cmds="\$CC -EL -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
即加上-EL
include目录。修改apr_want.h文件。将
struct iovec
{
char *iov_base;
size_t iov_len;
};修改为
#if 0
struct iovec
{
char *iov_base;
size_t iov_len;
};
#endif