« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
戒除浮躁,读好书,交益友 |
Blog信息 |
blog名称:邢红瑞的blog 日志总数:523 评论数量:1142 留言数量:0 访问次数:9688594 建立时间:2004年12月20日 |

| |
[c++]编译apache的几个问题 原创空间, 文章收藏, 软件技术, 电脑与网络
邢红瑞 发表于 2008/11/4 18:31:00 |
吃烧饼没有不掉芝麻的,做网站没有不受攻击的,这些人没事干,给我做的网站做压力测试,但是老大对产生的垃圾数据,很不满意,必须想办法防止spam。看了看apache有几个模块,放到网上一试,多少有些问题,一时又看不出问题在哪里,需要调试。我真的不喜欢使用gdb调试apache,还必须使用-x,来防止apache分离。只好使用windows下的调试工具了。windows下编译apache 也不是很简单,我记得 vc6编译apache 1.3,啥都用不用改。vc6编译apache 2.0,需要新的PSDK,因为需要新的ldap函数。vc8编译,apache 2.2,出现 正在创建命令行“rc.exe /d "_DEBUG" /d "APP_FILE" /d "BIN_NAME="httpd.exe"" /d "LONG_NAME="Apache HTTP Server"" /d "ICON_FILE="apache.ico"" /d "_VC80_UPGRADE=0x0600" /l 0x409 /I "build\win32" /I "./include" /I "./srclib/apr/include" /fo".\Debug/httpd.res" ".\build\win32\httpd.rc"”输出窗口 正在编译资源...fatal error RC1107: invalid usage; use RC /? for Help项目 : error PRJ0002 : 错误的结果 1 (从“D:\Program Files\Microsoft Visual Studio 8\VC\bin\rc.exe”返回)。昏倒。原因是工程打开有问题,.sln 文件转为 .vcproj时,运行perl srclib\apr\build\cvtdsp.pl -2005,vc编译东西居然需要perl。其实运行nmake -f makefile.win USEMAK=1 就可以了。vc编译居然需要命令行,汗,我不是在写驱动。编译apr模块的时候,更为恼火。测试代码#include "stdafx.h"#include "apr_pools.h"#include <stdio.h>#include <new>
int main(){ apr_pool_t *root; apr_pool_initialize();//初始化全局分配子(allocator),并为它设置mutext,以用于多线程环境,初始化全局池,指定全局分配子的owner是全局池 apr_pool_create(&root,NULL);//创建根池(默认父池是全局池),根池生命期为进程生存期。分配子默认为全局分配子 { apr_pool_t *child; apr_pool_create(&child,root);//创建子池,指定父池为root。分配子默认为父池分配子 void *pBuff=apr_palloc(child,sizeof(int));//从子池分配内存 int *pInt=new (pBuff) int(5);//随便举例下基于已分配内存后,面向对象构造函数的调用。 printf("pInt=%d\n",*pInt); { apr_pool_t *grandson; apr_pool_create(&grandson,root); void *pBuff2=apr_palloc(grandson,sizeof(int)); int *pInt2=new (pBuff2) int(15); printf("pInt2=%d\n",*pInt2);
apr_pool_destroy(grandson); } apr_pool_destroy(child);//释放子池,将内存归还给分配子 } apr_pool_destroy(root);//释放父池, apr_pool_terminate();//释放全局池,释放全局allocator,将内存归还给系统 getchar(); return 1;}路径中加载include文件,link时函数找不到,看了看apache的运行文件,发现有libapr-1.dll,那个lib就是libapr-1.lib,加了一行#pragma comment(lib, "libapr-1.lib")。我记得以前是静态库是s结尾的,现在似乎无法编译静态库了。 |
|
回复:编译apache的几个问题 原创空间, 文章收藏, 软件技术, 电脑与网络
柔情(游客)发表评论于2012/12/25 15:20:29 |
你啥时候编译的啊。我现在编译出来的用不了。奇怪。有兴趣一起研究的请加QQ群:5415650。一起讨论MEMPOOL的使用。 |
|
回复:编译apache的几个问题 原创空间, 文章收藏, 软件技术, 电脑与网络
轻轻(游客)发表评论于2010/5/19 10:33:55 |
项目 : error PRJ0002 : 错误的结果 1 (从“D:\Program Files\Microsoft Visual Studio 8\VC\bin\rc.exe”返回)。到底怎么解决啊,我也遇到了!等待回答!! |
|
» 1 »
|