代码之家  ›  专栏  ›  技术社区  ›  Nicsoft

编译apache时出错,“未定义的符号:未定义的符号:”u apr_dir_read$inode64“…ld:未找到符号”

  •  1
  • Nicsoft  · 技术社区  · 15 年前

    我正在尝试编译Apache。我下载了最新版本的源代码(2.2.17)。我就是这样做的:

    > sudo ./configure --prefix=/usr/local/apache2 --with-included-apr --enable-mods-shared=all --enable-module=so
    
    > sudo make
    

    当我这样做的时候,我得到:

    /Users/Niklas/Development/apache/httpd-2.2.17/srclib/apr/libtool --silent --mode=link gcc -g -O2        -o httpd  modules.lo buildmark.o -export-dynamic server/libmain.la modules/http/libmod_http.la modules/mappers/libmod_so.la server/mpm/prefork/libprefork.la os/unix/libos.la  /Users/Niklas/Development/apache/httpd-2.2.17/srclib/pcre/libpcre.la /Users/Niklas/Development/apache/httpd-2.2.17/srclib/apr-util/libaprutil-1.la -lexpat -liconv /Users/Niklas/Development/apache/httpd-2.2.17/srclib/apr/libapr-1.la -lpthread
    Undefined symbols:
      "_apr_dir_read$INODE64", referenced from:
          _process_resource_config_nofnmatch in libmain.a(config.o)
          _ap_process_resource_config in libmain.a(config.o)
      "_apr_file_info_get$INODE64", referenced from:
          _ap_pcfg_openfile in libmain.a(util.o)
      "_apr_dir_open$INODE64", referenced from:
          _process_resource_config_nofnmatch in libmain.a(config.o)
          _ap_process_resource_config in libmain.a(config.o)
      "_apr_stat$INODE64", referenced from:
          _ap_process_resource_config in libmain.a(config.o)
          _ap_mpm_set_coredumpdir in libmain.a(mpm_common.o)
          _ap_is_directory in libmain.a(util.o)
          _ap_is_rdirectory in libmain.a(util.o)
          _ap_log_pid in libmain.a(log.o)
          _unixd_pre_config in libos.a(unixd.o)
          _resolve_symlink in libmain.a(request.o)
          _resolve_symlink in libmain.a(request.o)
          _resolve_symlink in libmain.a(request.o)
          _ap_directory_walk in libmain.a(request.o)
          _ap_directory_walk in libmain.a(request.o)
          _ap_directory_walk in libmain.a(request.o)
          _ap_sub_req_lookup_dirent in libmain.a(request.o)
          _ap_sub_req_lookup_dirent in libmain.a(request.o)
          _ap_sub_req_lookup_file in libmain.a(request.o)
          _ap_sub_req_lookup_file in libmain.a(request.o)
    ld: symbol(s) not found
    collect2: ld returned 1 exit status
    make[1]: *** [httpd] Error 1
    make: *** [all-recursive] Error 1
    

    我做错什么了?

    我正在使用OSX,但我想这没关系吧?

    谢谢你的加入!

    当做, 尼克拉斯

    2 回复  |  直到 15 年前
        1
  •  1
  •   Cfreak    15 年前

    你想建立在OSX上?是否安装了开发工具?

    你的编译肯定失败了,这就是为什么它不能工作的原因。您最好寻找预编译的包来做您需要做的事情。至少,您最好在OSX上寻找构建Apache的指南。

    Apache还提供了一种编译方法,只需使用一个名为 apxs2 . OSX应该已经安装了Apache,我无法想象他们不会在构建中启用它。

    当然,我也不确定,但一个好的起点应该是谷歌。 install mod_dbd on OSX

    希望有帮助!

        2
  •  1
  •   Zaid Amireh    14 年前

    我在Mac OS X上构建httpd 2.4.2时遇到了类似的问题,首先从这里下载最新的4月 http://apr.apache.org/ 然后编译并安装到某个地方,然后像这样重新配置httpd

    ./configure --with-apr=/Users/youruser/where/you/installed/apr