Как собрать WSO2 WSF / PHP 2.1.0 для FreeBSD 8.1? - PullRequest
2 голосов
/ 16 июня 2011

У меня проблема со сборкой WSO2 WSF / PHP на моей FreeBSD 8.1.Кажется, что-то не работает в источнике.

Я проверяю все необходимые условия, затем запускаю ./configure && make и получаю следующую ошибку:

Making all in platforms/unix
/usr/local/bin/bash ../../../libtool --tag=CC    --mode=compile gcc -DHAVE_CONFIG_H -I. -I../../.. -I../../../include  -I../../../include/platforms  -I../../../include/platforms/unix     -g -O2 -D_LARGEFILE64_SOURCE -ansi -Wall -Wno-implicit-function-declaration -D_GNU_SOURCE -MT uuid_gen_unix.lo -MD -MP -MF .deps/uuid_gen_unix.Tpo -c -o uuid_gen_unix.lo uuid_gen_unix.c
mkdir .libs
 gcc -DHAVE_CONFIG_H -I. -I../../.. -I../../../include -I../../../include/platforms -I../../../include/platforms/unix -g -O2 -D_LARGEFILE64_SOURCE -ansi -Wall -Wno-implicit-function-declaration -D_GNU_SOURCE -MT uuid_gen_unix.lo -MD -MP -MF .deps/uuid_gen_unix.Tpo -c uuid_gen_unix.c  -fPIC -DPIC -o .libs/uuid_gen_unix.o
uuid_gen_unix.c: In function 'axutil_uuid_get_mac_addr':
uuid_gen_unix.c:332: error: 'SIOCGARP' undeclared (first use in this function)

После поиска в Google я нашел совет по настройке с ./configure 'CPPFLAGS=-DHAVE_GETIFADDRS',После этого команда make почти завершена, но в конце умирает со следующей информацией:

gcc -g -O2 -D_LARGEFILE64_SOURCE -ansi -Wall -Wno-implicit-function-declaration -o .libs/test test.o  ../../axiom/src/om/.libs/libaxis2_axiom.so ../../util/src/.libs/libaxutil.so ../src/.libs/libneethi.so /usr/home/alisachenko/src/wso2-wsf-php-src-2.1.0/wsf_c/axis2c/axiom/src/om/.libs/libaxis2_axiom.so /usr/home/alisachenko/src/wso2-wsf-php-src-2.1.0/wsf_c/axis2c/axiom/src/parser/guththila/.libs/libaxis2_parser.so /usr/home/alisachenko/src/wso2-wsf-php-src-2.1.0/wsf_c/axis2c/guththila/src/.libs/libguththila.so /usr/home/alisachenko/src/wso2-wsf-php-src-2.1.0/wsf_c/axis2c/util/src/.libs/libaxutil.so -lpthread -lz  -Wl,--rpath -Wl,/usr/local/wsf_c/lib
../../util/src/.libs/libaxutil.so: undefined reference to `ftime'

Что мне нужно сделать, чтобы полностью собрать WSO2 на моей FreeBSD?

UPD1 Здание после ./configure 'CPPFLAGS=-DHAVE_GETIFADDRS' 'LDFLAGS=-lcompat'

gcc -shared   -Wl,--whole-archive ../src/platforms/unix/.libs/libaxis2_unix.a -Wl,--no-whole-archive  -lcompat -lpthread -lz  -Wl,-soname -Wl,libaxutil.so.4 -o .libs/libaxutil.so.4
/usr/bin/ld: /usr/lib/libcompat.a(ftime.o): relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC
/usr/lib/libcompat.a: could not read symbols: Bad value

UPD2 Здание после ./configure CPPFLAGS='-fPIC -DHAVE_GETIFADDRS' 'LDFLAGS=-lcompat'

gcc -shared  .libs/hash.o .libs/allocator.o .libs/env.o .libs/error.o .libs/stream.o .libs/log.o .libs/string.o .libs/string_util.o .libs/qname.o .libs/array_list.o .libs/linked_list.o .libs/utils.o .libs/dir_handler.o .libs/file_handler.o .libs/class_loader.o .libs/network_handler.o .libs/file.o .libs/uuid_gen.o .libs/thread_pool.o .libs/property.o .libs/types.o .libs/param.o .libs/param_container.o .libs/dll_desc.o .libs/url.o .libs/stack.o .libs/generic_obj.o .libs/base64.o .libs/uri.o .libs/date_time.o .libs/base64_binary.o .libs/properties.o .libs/http_chunked_stream.o .libs/rand.o .libs/date_time_util.o .libs/version.o .libs/duration.o .libs/frame.o .libs/stomp.o .libs/md5.o .libs/digest_calc.o -Wl,--whole-archive ../src/platforms/unix/.libs/libaxis2_unix.a -Wl,--no-whole-archive  -lcompat -lpthread -lz  -Wl,-soname -Wl,libaxutil.so.4 -o .libs/libaxutil.so.4
/usr/bin/ld: /usr/lib/libcompat.a(ftime.o): relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC
/usr/lib/libcompat.a: could not read symbols: Bad value
*** Error code 1

Stop in /usr/src/wso2-wsf-php-src-2.1.0/wsf_c/axis2c/util/src.

Ответы [ 2 ]

1 голос
/ 14 апреля 2012


Я также пытаюсь запустить WSO2 на различных FreeBSD AMD64 безуспешно .
Я собираю WSO2 в тюрьме, построенной поверх ezjail.Поскольку требуется перекомпиляция libcompat, я сделал это в «основной» системе.Все остальное делается в джейле.

  1. В основной системе (без джейла) я перекомпилировал libcompat (/ usr / src / lib / libcompat) с -fPIC в make-файле, так что теперьвыглядит так:

    CFLAGS + = - fPIC -DLIBC_SCCS -DSYSLIBC_SCCS -I $ {. CURDIR} /../ libc / locale

    [root @ system / usr / src / lib /libcompat] # make install
    установить -C -o root -g wheel -m 444 libcompat.a / usr / lib
    установить -C -o root -g wheel -m 444 libcompat_p.a / usr / lib

  2. Затем я скопировал libcompat.a и libcompat_p.a в basejail и переключился в тюрьму, где я сделал компиляцию

Я нашел это: http://bsd.dischaos.com/2008/05/14/wso-web-services-framework-on-freebsd/, который вдохновил меня.
Я изменил wsf_c / axis2c / util / src / platform / unix / uuid_gen_unix.c и добавил
#include
(Iпоместите здесь ^^^^ пробел, потому что я был неправильно проанализирован порталом stackoverflow)

3.Затем я изменил configure.m4 и поместил следующий путь PHP_ADD_INCLUDE (/ usr / local / include / libxml2 / libxml), заменив исходный

4.Затем, по-прежнему испытывая проблемы с компиляцией, я добавил эти переменные среды export CPATH = / usr / local / include: / usr / local / include / libxml2: / usr / local / ssl / include / openssl :: / usr / local / ssl / include
export LD_LIBRARY_PATH = / usr / local / lib

5.И наконец мне удалось скомпилировать без ошибок

. / Configure "CPPFLAGS = -fPIC -DHAVE_GETIFADDRS" "LDFLAGS = -lcompat"
make
make install

В моей тестовой тюрьме на удаленном сервере еще нет веб-интерфейса, и поэтому я не смог протестировать эту установку на предоставленных примерах, но я почти уверен, что у меня все получится, поскольку не было ошибок ни в make, ни в make.install.
Php -m показывает модуль wsf без каких-либо ошибок.
Образцы также работают нормально. Я пока не могу получить wsdls, но это скорее вопрос времени.

Важной проблемой, с которой вы можете столкнуться, является openssl.Должно быть, по крайней мере, в версии 0.9.8, если я правильно помню.Я использую 1.x.хотя
Хотя эта установка работает нормально на Freebsd 8.x, я не смог заставить ее работать на FreeBSD 6.x.На 6.x я наконец-то успешно собрал WSO2, но получил segfaults, когда включил wsf.so в конфигурацию php ... затем я отказался от 6.x и сосредоточился на freebsd 8.x, где, кажется, все работает нормально ... только начинаюнемного программировать с этим модулем.

1 голос
/ 17 июня 2011
./configure 'CPPFLAGS=-DHAVE_GETIFADDRS LDFLAGS==-lcompat'
...