Я пытаюсь скомпилировать httpd-2.4.20 в поле Solaris 11.3. ./configure не выдает ошибок. Но make выдает ошибку, и я не знаю, как ее исправить. Подобного вопроса не найдено ни в stackoverflow, ни в поиске Google. Мои команды следующие.

root@LDOM01-test:/data/software/httpd-2.4.20# uname -ar
SunOS LDOM01-test 5.11 11.3 sun4v sparc sun4v

root@LDOM01-test:/data/software/httpd-2.4.20# gcc --version
gcc (GCC) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

root@LDOM01-test:/data/software/httpd-2.4.20# ./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr
....
....
....

root@LDOM01-test:/data/software/httpd-2.4.20# make
.....
.....
.....

/usr/local/apr/build-1/libtool --silent --mode=compile gcc -std=gnu99  -g -O2      -DSOLARIS2=11 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -D_LARGEFILE64_SOURCE     -I. -I/data/software/httpd-2.4.20/os/unix -I/data/software/httpd-2.4.20/include -I/usr/local/apr/include/apr-1 -I/usr/include/pcre -I/data/software/httpd-2.4.20/modules/aaa -I/data/software/httpd-2.4.20/modules/cache -I/data/software/httpd-2.4.20/modules/core -I/data/software/httpd-2.4.20/modules/database -I/data/software/httpd-2.4.20/modules/filters -I/data/software/httpd-2.4.20/modules/ldap -I/data/software/httpd-2.4.20/modules/loggers -I/data/software/httpd-2.4.20/modules/lua -I/data/software/httpd-2.4.20/modules/proxy -I/data/software/httpd-2.4.20/modules/session -I/data/software/httpd-2.4.20/modules/ssl -I/data/software/httpd-2.4.20/modules/test -I/data/software/httpd-2.4.20/server -I/data/software/httpd-2.4.20/modules/arch/unix -I/data/software/httpd-2.4.20/modules/dav/main -I/data/software/httpd-2.4.20/modules/generators -I/data/software/httpd-2.4.20/modules/mappers -prefer-pic -c regexp.c && touch regexp.slo
/usr/local/apr/build-1/libtool --silent --mode=link gcc -std=gnu99  -g -O2           -o mod_sed.la -rpath /usr/local/apache2/modules -module -avoid-version  mod_sed.lo sed0.lo sed1.lo regexp.lo -export-symbols-regex sed_module
/usr/local/apr/build-1/libtool[1086]: eval: syntax error at line 1: `|' unexpected
*** Error code 3
make: Fatal error: Command failed for target `mod_sed.la'
Current working directory /data/software/httpd-2.4.20/modules/filters
*** Error code 1
The following command caused the error:
if test `pwd` = "/data/software/httpd-2.4.20"; then \
    echo "" ; \
fi; \
list=''; for i in $list; do \
    target="shared-build"; \
    if test "$i" = "."; then \
        made_local=yes; \
        target="local-shared-build"; \
    fi; \
    if test "$i" != "srclib"; then \
        (cd $i && make $target) || exit 1; \
    fi; \
done; \
if test -f 'modules.mk'; then \
    if test -n 'mod_buffer.la mod_ratelimit.la mod_reqtimeout.la mod_ext_filter.la mod_request.la mod_include.la mod_filter.la mod_substitute.la mod_sed.la mod_deflate.la'; then \
        echo "Building shared: mod_buffer.la mod_ratelimit.la mod_reqtimeout.la mod_ext_filter.la mod_request.la mod_include.la mod_filter.la mod_substitute.la mod_sed.la mod_deflate.la"; \
        if test "$made_local" != "yes"; then \
                make "local-shared-build" || exit 1; \
        fi; \
    fi; \
fi; \
if test `pwd` = "/data/software/httpd-2.4.20"; then \
        echo "" ; \
fi
make: Fatal error: Command failed for target `shared-build-recursive'
Current working directory /data/software/httpd-2.4.20/modules/filters
*** Error code 1
The following command caused the error:
if test `pwd` = "/data/software/httpd-2.4.20"; then \
    echo "" ; \
fi; \
list='aaa cache core database debugging filters http loggers metadata proxy session slotmem ssl proxy/balancers arch/unix dav/main generators dav/fs mappers'; for i in $list; do \
    target="shared-build"; \
    if test "$i" = "."; then \
        made_local=yes; \
        target="local-shared-build"; \
    fi; \
    if test "$i" != "srclib"; then \
        (cd $i && make $target) || exit 1; \
    fi; \
done; \
if test -f 'modules.mk'; then \
    if test -n ''; then \
        echo "Building shared: "; \
        if test "$made_local" != "yes"; then \
                make "local-shared-build" || exit 1; \
        fi; \
    fi; \
fi; \
if test `pwd` = "/data/software/httpd-2.4.20"; then \
        echo "" ; \
fi
make: Fatal error: Command failed for target `shared-build-recursive'
Current working directory /data/software/httpd-2.4.20/modules
*** Error code 1
The following command caused the error:
if test `pwd` = "/data/software/httpd-2.4.20"; then \
    echo "" ; \
fi; \
list='srclib os server modules support'; for i in $list; do \
    target="shared-build"; \
    if test "$i" = "."; then \
        made_local=yes; \
        target="local-shared-build"; \
    fi; \
    if test "$i" != "srclib"; then \
        (cd $i && make $target) || exit 1; \
    fi; \
done; \
if test -f 'modules.mk'; then \
    if test -n ''; then \
        echo "Building shared: "; \
        if test "$made_local" != "yes"; then \
                make "local-shared-build" || exit 1; \
        fi; \
    fi; \
fi; \
if test `pwd` = "/data/software/httpd-2.4.20"; then \
        echo "" ; \
fi
make: Fatal error: Command failed for target `shared-build-recursive'
Current working directory /data/software/httpd-2.4.20
*** Error code 1
The following command caused the error:
otarget=`echo all-recursive|sed s/-recursive//`; \
list='  srclib os server modules support'; \
for i in $list; do \
    if test -d "$i"; then \
        target="$otarget"; \
        echo "Making $target in $i"; \
        if test "$i" = "."; then \
                made_local=yes; \
                target="local-$target"; \
        fi; \
        (cd $i && make $target) || exit 1; \
    fi; \
done; \
if test "$otarget" = "all" && test -z 'httpd shared-build '; then \
    made_local=yes; \
fi; \
if test "$made_local" != "yes"; then \
    make "local-$otarget" || exit 1; \
fi
make: Fatal error: Command failed for target `all-recursive'
3
Shanika 28 Май 2016 в 11:53

3 ответа

Лучший ответ

Проблема была в Solaris 11.3 / usr / bin / nm. Я изменил его на gnm, используя переменную окружения, и он решил все проблемы.

export NM=/usr/bin/gnm;
2
Shanika 29 Май 2016 в 16:14

Используйте gmake вместо make.

Многие, многие проекты неявно требуют использования GNU make.

0
Andrew Henle 28 Май 2016 в 12:03

После ./configure .... отредактируйте apr libtool srclib / apr / libtool и удалите \ $ global_symbol_pipe | из следующей строки

# The commands to list exported symbols.
export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
>>>>>
export_symbols_cmds="\$NM \$libobjs \$convenience |  \$SED 's/.* //' | sort | uniq > \$export_symbols"

Тогда gmake. (Спасибо Эндрю Хенле)

3
Shanika 28 Май 2016 в 18:14