Неопределенные символы, компилирующие модуль apache mod_transform в Mac OS X - PullRequest
0 голосов
/ 29 октября 2009

Я пытаюсь скомпилировать mod_transform в Mac OS X 10.6, но при запуске make выдает ошибку ld. Благодаря diciu я добавил несколько CFLAGS, которые решают большинство проблем со связью, но я все еще не могу заставить работать ссылку apreq2

$ 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

... чик ...

$ 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] Error 1

У кого-нибудь есть еще какие-нибудь хитрости, чтобы это исправить?

Это mod_transform от http://svn.outoforder.cc/svn/mod_transform/trunk/

Laurence

1 Ответ

0 голосов
/ 29 октября 2009

Похоже, что ваш configure run не смог обнаружить зависимость от libxml2:

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

Чтобы исправить компиляцию, вы можете добавить "-lxml2" в gcc, т.е. :

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

, но это обычно обрабатывается созданным configure Makefile. Попробуйте просмотреть configure.log , чтобы выяснить, почему libxml2 настроен неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...