【问题标题】:Error when compiling apache, "Undefined symbols:Undefined symbols:"_apr_dir_read$INODE64"......ld: symbol(s) not found"编译 apache 时出错,“未定义符号:未定义符号:”_apr_dir_read$INODE64“......ld:未找到符号”
【发布时间】:2010-11-02 21:01:52
【问题描述】:

我正在尝试编译 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,但我想这应该没关系?

我已经为此苦苦挣扎了好几天,希望有人能指出正确的方向吗?

谢谢你!

问候, 尼克拉斯

【问题讨论】:

  • 我解决了。我确实再次下载了源代码并重新进行了一遍。在尝试解决问题时,我一定是破坏了某些东西,但现在正在编译全新安装。
  • 重新下载对我也有用——奇怪!!

标签: macos module apache2 compilation building


【解决方案1】:

您正在尝试在 OSX 上构建?是否安装了开发工具?

您的编译肯定失败了,这就是它无法正常工作的原因。你可能会更好地寻找预编译的包来做你需要做的事情。至少您最好寻找在 OSX 上构建 apache 的指南。

Apache 还可以使用名为apxs2 的实用程序编译安装您尝试添加的模块。 OSX 应该已经安装了 Apache,我无法想象他们不会在他们的构建中启用它。

当然,我不确定,但谷歌install mod_dbd on OSX 是一个不错的起点

希望对您有所帮助!

【讨论】:

  • 嗯,这有点奇怪,但是“MySQL-driver”没有与 Apache2 一起编译。我相信我读过一些关于许可问题的东西,但不确定。因此,这就是它在 httpd.config 中抱怨 DBRiver = mysql 的原因。我认为 mod_dbd 已正确安装,这是我没有正确包含的 mysql-driver,我已经更新了我的问题以反映这一点。不了解 apxs2,将检查它(但我发现没有任何说明指向它......)。如何验证是否安装了开发工具?我对大多数活动都是新手...
  • 好的,我的问题似乎在编译或使用 mod_dbd 模块之前就开始了。为了反映这一点,我更新了我的问题。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-07
    • 2012-05-08
    • 2016-04-29
    • 1970-01-01
    • 2015-05-23
    • 2016-11-18
    • 2012-06-19
    相关资源
    最近更新 更多