apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim Bray <Tim.B...@Sun.COM>
Subject Hard to build httpd & APR on OS X Leopard
Date Fri, 11 Jan 2008 20:20:05 GMT
Disclosure: My autotools expertise is not that great.  In fact, since  
I've been in Ruby & Java mostly the last few years, I may be missing  
something obvious at the ld or gcc level.  This is all with a fresh  
2.2.6 tarball downloaded earlier this week.  This note to both  
dev@httpd & dev@apr because the problem seems to be in the crack  
between them.

I got here because apr_global_mutex_create() was acting weird, so I  
wanted to step into it with the debugger.   So I went to apr and did

CFLAGS=-g ./configure
make

Oops...
network_io/unix/sendrecv.c:967:2: error: #error APR has detected  
sendfile on your system, but nobody has written a
network_io/unix/sendrecv.c:968:2: error: #error version of it for APR  
yet. To get past this, either write
network_io/unix/sendrecv.c:969:2: error: #error apr_socket_sendfile or  
change APR_HAS_SENDFILE in apr.h to 0.

Hmph.  So I tried changing APR_HAS_SENDFILE in apr.h to 0 and make/ 
make install worked.

But... I couldn't get httpd to build with my new APR living in /usr/ 
local/apr.  I think this is because httpd's configure writes build/ 
config_vars.mk including this:

LDFLAGS = -L/usr/lib -L/usr/local/apr/lib

So, it's irrelevant how you go about building APR, you're gonna get  
the one that Leopard ships in /usr/lib (and hey, it's nice that  
Leopard ships with APR).

I tried a few ./configure options but couldn't find one to force it to  
change the -L, so I eventually went and edited build/config_vars.mk,  
blecch.

But then httpd wouldn't build, on the final "-o httpd" step I got

Undefined symbols:
   "_apr_socket_sendfile", referenced from:
       _ap_hack_apr_socket_sendfile in libmain.a(exports.o)
       _sendfile_it_all in libmain.a(core_filters.o)
ld: symbol(s) not found

Hokay... I suspect it's most likely that's I'm just ignorant of  
something obvious that Everybody Knows.  If so, what is it?

It does seem like it shouldn't be this hard.  -Tim




Mime
View raw message