zoukankan      html  css  js  c++  java
  • 手动编译cppserv0.1.99 @ apache2.2

    因为apache-2.2改变了一些接口,使下载的源码不能直接编译,必须进行适当的修改:

    1. 找不到APR的路径
    修改文件:src/mod_cppserv/Makefile.adon
    手动加上:mod_csserv_CPPFLAGS+= -I/usr/include/apr-1

    2. apr_socket_create少了一个参数(原来只有4个参数)
    修改文件:mod_cserv.cpp
    加上apr_socket_create的第四个参数:APR_PROTO_TCP

    3.APR_BRIGADE_FOREACH无效了
    修改文件:mod_cserv.cpp
    将APR_BRIGADE_FOREACH用
    for (e = APR_BRIGADE_FIRST(b);
               e != APR_BRIGADE_SENTINEL(b);
              e = APR_BUCKET_NEXT(e))
    替代。找到源码的change log,是这么说的:

     /**
      - * Iterate through a bucket brigade
      - * @param e The current bucket
      - * @param b The brigade to iterate over
      - * @remark This is the same as either:
      - * <pre>
      - *   e = APR_BRIGADE_FIRST(b);
      - *   while (e != APR_BRIGADE_SENTINEL(b)) {
      - *       ...
      - *       e = APR_BUCKET_NEXT(e);
      - *   }
      - *  OR
      - *   for (e = APR_BRIGADE_FIRST(b);
      - *           e != APR_BRIGADE_SENTINEL(b);
      - *           e = APR_BUCKET_NEXT(e)) {
      - *       ...
      - *   }
      - * </pre>
      - * @warning Be aware that you cannot change the value of e within
      - * the foreach loop, nor can you destroy the bucket it points to.
      - * Modifying the prev and next pointers of the bucket is dangerous
      - * but can be done if you're careful.  If you change e's value or
      - * destroy the bucket it points to, then APR_BRIGADE_FOREACH
      - * will have no way to find out what bucket to use for its next
      - * iteration.  The reason for this can be seen by looking closely
      - * at the equivalent loops given in the tip above.  So, for example,
      - * if you are writing a loop that empties out a brigade one bucket
      - * at a time, APR_BRIGADE_FOREACH just won't work for you.  Do it
      - * by hand, like so:
      - * <pre>
      - *      while (!APR_BRIGADE_EMPTY(b)) {
      - *          e = APR_BRIGADE_FIRST(b);
      - *          ...
      - *          apr_bucket_delete(e);
      - *      }
      - * </pre>
      - * @deprecated This macro causes more headaches than it's worth.  Use
      - * one of the alternatives documented here instead; the clarity gained
      - * in what's really going on is well worth the extra line or two of code.
      - * This macro will be removed at some point in the future.
      - */
      -#define APR_BRIGADE_FOREACH(e, b)                                    \
      -     APR_RING_FOREACH((e), &(b)->list, apr_bucket, link)
      -


    4. APR_STATUS_IS_SUCCESS(rv)无效了
    修改文件:mod_cserv.cpp
    据说将它改成:rv == APR_STATUS_IS_SUCCESS

  • 相关阅读:
    使用System.getProperty方法,如何配置JVM系统属性
    java的System.getProperty()方法可以获取的值
    文档系统
    会议系统
    MyEclipse优化】-----如何合理设置MyEclipse中的validation选项
    myeclipse10 java builder path libraries 添加tomcat
    WPF Step By Step 系列-Prism框架在项目中使用
    【MVVM Light】新手初识MVVM,你一看就会
    Android获取全部存储卡挂载路径
    VME总线
  • 原文地址:https://www.cnblogs.com/huqingyu/p/686744.html
Copyright © 2011-2022 走看看