如何为FreeBSD 8.1构建WSO2 WSF / PHP 2.1.0?

时间:2011-06-16 10:57:04

标签: php build freebsd wso2

我在FreeBSD 8.1上构建WSO2 WSF / PHP时遇到问题。似乎在源头中出现了一些问题。

我检查所有先决条件然后运行./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)

谷歌搜索后,我找到了一个配置./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'

如何在FreeBSD上完全构建WSO2?

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 个答案:

答案 0 :(得分:1)

./configure 'CPPFLAGS=-DHAVE_GETIFADDRS LDFLAGS==-lcompat'

答案 1 :(得分:1)


我也试图在各种FreeBSD AMD64 上运行WSO2而没有成功 我正在ezjail上构建的监狱中编译WSO2。 由于需要重新编译libcompat,我在“main”系统中完成了它。其余的都在监狱里完成。

  1. 在主系统(没有jail)中,我在makefile中使用-fPIC重新编译了libcompat(/ usr / src / lib / libcompat),所以现在该行看起来像这样:

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

    [root @ system / usr / src / lib / libcompat] #make install
    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并切换到jail进行编译

  3. 我发现了这个:http://bsd.dischaos.com/2008/05/14/wso-web-services-framework-on-freebsd/ 这激发了我的灵感 我修改了wsf_c / axis2c / util / src / platforms / unix / uuid_gen_unix.c并添加了
        #include<了sys / param.h>
    (我把^^^^空间放在这里因为我被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”
     使
     制作安装

    我在远程服务器上的测试jail还没有Web界面可用,因此我无法在提供的示例上测试此安装,但我很确定我会成功,因为在make期间没有错误make install。
    Php -m显示没有任何段错误的wsf模块 样品也很好用。 我还不能得到wsdls,但这是时间问题。

    您可能面临的重要问题是openssl。如果我没记错的话,它至少必须在0.9.8版本中。我正在使用1.x.虽然
    虽然这个设置在Freebsd 8.x上运行正常但我无法在FreeBSD 6.x上运行。在6.x我终于成功构建了WSO2,但在php配置中包含wsf.so时得到了段错误...然后我放弃了6.x并专注于freebsd 8.x它似乎工作正常...刚刚开始用这个模块做一些编程。