开发者

Undefined symbols compiling apache module mod_transform on Mac OS X

I'm trying to compile mod_transform on Mac OS X 10.6, but get an ld error while running make. Thanks to diciu I have added some CFLAGS which resolve most of the linking problems, but I still am unable to get the apreq2 linking to work

$ CFLAGS="-lxml2 -lxslt -L/opt/local/lib -lapreq2" ./configure --with-apr=/opt/local/bin/apr-1-config --with-apr-util=/opt/local/bin/apu-1-config --with-apxs=/opt/local/apache2/bin/apxs --with-apreq2=/opt/local/bin/apreq2-config

...snip...

$ make
$ make
Making all in src
/opt/local/share/apr-1/build/libtool --tag=CC   --mode=link gcc -Wall -I../include -I/usr/local/include -I/usr/local/include/libxml2 -O2 -arch x86_64 -I/opt/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp  -I/opt/local/apache2/include  -I/opt/local/include/apr-1   -I/opt/local/include/apr-1 -I/opt/local/include -O2 -arch x86_64 -I/opt/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp  -I/opt/local/apache2/include  -I/opt/local/include/apr-1 -I/opt/local/include  -I/opt/local/include/apr-1  -I/opt/local/include/apreq2  -I/opt/local/include/apr-1  -I/opt/local/include -lxml2 -lxslt -L/opt/local/lib -lapreq2 -module -export-dynamic -avoid-version -no-undefined  /opt/local/lib/libapreq2.la  -L/opt/local/lib -laprutil-1 -L/opt/local/lib/db46 -L/opt/local/lib -lapr-1  -lpthread -ldb-4.6 -lexpat -liconv  -o http.la -rpath /opt/local/apache2/modules/mod_transform http_la-http.lo  
/usr/bin/gcc-4.2  -o .libs/http.so -bundle  .libs/http_la-http.o  -lxml2 -lxslt -L/opt/local/lib /opt/local/lib/libapreq2.dylib -L/opt/local/lib/db46 /opt/local/lib/libaprutil-1.dylib /opt/local/lib/libapr-1.dylib -lpthread /opt/local/lib/db46/libdb-4.6.dylib /opt/local/lib/libexpat.dylib /opt/local/lib/libiconv.dylib  -arch x86_64 -arch x86_64
Undefined symbols:
  "_apreq_handle_apache2", referenced from:
      _transform_run_begin in http_la-http.o
      _filter_init in http_la-http.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[1]: *** [http.la] Error 1
make: *** [all-recursive] E开发者_如何学JAVArror 1

Anyone have any other tweaks to fix this?

This is mod_transform from http://svn.outoforder.cc/svn/mod_transform/trunk/

Laurence


Looks like your configure run failed to pick up a dependence on libxml2:

nm -arch x86_64 /usr/lib/libxml2.dylib | grep _xmlXPathNewFloat
    0000000000054896 T _xmlXPathNewFloat

To fix the compilation, you could to add "-lxml2" to gcc, i.e.:

/usr/bin/gcc-4.2 -o .libs/http.so -bundle .libs/http_la-http.o ... -lxml2

but this is usually handled by the configure created Makefile. Try to look through the configure.log for any clues on why libxml2 is not correctly set up.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜