编译apache时出错,“未定义符号:未定义符号:”_ apr_dir_read $ INODE64“...... ld:符号未找到”

问题描述:

我想编译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,但我想这应该不重要?

我一直在为此奋斗了好几天,所以我希望有人能指出我的方向?

谢谢advnace!

问候, 尼克拉斯

+1

我解决它有一个类似的问题。我再次下载了源代码,并重新做了一遍。在尝试解决问题时,我一定已经摧毁了一些东西,但是现在正在编译的全新安装。 – Nicsoft 2010-11-03 20:46:32

+0

重新下载为我工作 - 奇怪! – Jonathan 2012-01-23 17:29:07

你试图建立在OSX?你是否安装了开发工具?

您的编译绝对失败,这就是为什么它不工作。你可能会更适合寻找预编译包来做你需要做的事情。至少你会更好地寻找在OSX上构建apache的指南。

Apache也有一种编译方式,只需使用名为apxs2的实用程序来安装您要添加的模块。 OSX应该已经安装了Apache,我无法想象他们不会在他们的构建中启用它。

就算我不能肯定,但一个良好的开端将是谷歌install mod_dbd on OSX

希望帮助你!

+0

好吧,这有点奇怪,但是“MySQL驱动程序”不能与Apache2一起编译。我相信我阅读了一些关于许可问题的内容,但不确定。因此,这就是为什么它在httpd.config中抱怨DBRiver = mysql。我认为mod_dbd已正确安装,它是我没有正确包含的mysql驱动程序,我更新了我的问题以反映这一点。不知道apxs2,会检查出来(但没有发现指示它的指示...)。如何验证开发工具是否已安装?我对这些活动大部分都是新手...... – Nicsoft 2010-11-02 21:22:42

+0

好的,好像我的问题是在编译或使用mod_dbd模块的时候开始的。我已经更新了我的问题以反映这一点。 – Nicsoft 2010-11-03 20:24:03

我,而在Mac OS X的httpd建设2.4.2,首先从这里http://apr.apache.org/下载最新的APR然后编译并安装的地方,然后重新配置的httpd这样

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