Информация о сервере:
# cat /etc/*-release
SUSE Linux Enterprise Server 11 (x86_64)
VERSION = 11
PATCHLEVEL = 0
LSB_VERSION="core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-x86_64:core-3.2-x86_64:core-4.0-x86_64"
Сначала я установил OpenSSL 1.0.1g:
# tar -zxf openssl-1.0.1g.tar.gz
# cd /usr/src/openssl-1.0.1g
# make clean
# ./config --prefix=/usr --openssldir=/usr/local/openssl enable-tlsext no-shared no-zlib -fPIC no-gost
# make depend
# make
# make test
# make install
# mv /usr/bin/openssl /root/
# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
# openssl version
OpenSSL 1.0.1g 7 Apr 2014
Затем я установил APR и APR-UTIL
# cd /usr/src
# tar -zxf apr-1.5.2.tar.gz
# cd /usr/src/apr-1.5.2
# ./configure
# make
# make test
# make install
# tar -zxf apr-util-1.5.4.tar.gz
# cd /usr/src/apr-util-1.5.4/
# ./configure --with-apr=/usr/local/apr --with-ldap=ldap --with-crypto
# make
# make test
# make install
# cp /usr/local/apr/bin/* /usr/bin
Затем я устанавливаю Apache 2.4.16:
# tar -zxf httpd-2.4.16.tar.gz
# cd /usr/src/httpd-2.4.16/
# make clean
# env LDFLAGS=-ldl
# export LIBS=-ldl
# CFLAGS="-fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -g -fPIC -Wall -fno-strict-aliasing -DLDAP_DEPRECATED"; export CFLAGS
# CPPFLAGS="-DSSL_EXPERIMENTAL_ENGINE -DMAX_SERVER_LIMIT=200000 -DLDAP_DEPRECATED -DMAXLINE=4096"; export CPPFLAGS
# ./configure --prefix=/usr/sbin/httpd \
--enable-shared \
--enable-layout=SuSE \
--with-apr=/usr/bin/apr-1-config \
--with-apr-util=/usr/bin/apu-1-config \
--enable-exception-hook \
--with-pcre \
--enable-pie \
--enable-ssl \
--with-ssl=/usr/local/ssl \
--enable-ssl-staticlib-deps \
--enable-mods-static=ssl \
--enable-mod_php5 \
--enable-mod_fcgid \
--enable-mod_perl \
--enable-mod_session_crypto \
--disable-isapi \
--enable-deflate \
--enable-echo \
--enable-filter \
--enable-ext-filter \
--enable-charset-lite \
--enable-file-cache \
--enable-logio \
--enable-dumpio \
--enable-bucketeer \
--enable-case_filter \
--enable-case_filter_in \
--with-ldap \
--enable-ldap \
--enable-authnz_ldap \
--enable-proxy \
--enable-proxy-connect \
--enable-proxy-ftp \
--enable-proxy-http \
--enable-cache \
--enable-disk-cache \
--enable-mem-cache \
--enable-VERSION \
--enable-dav-lock \
--enable-authn-alias \
--enable-optional-hook-export \
--enable-optional-hook-import \
--enable-optional-fn-import \
--enable-optional-fn-export \
--enable-suexec \
--with-suexec-bin=/usr/sbin/suexec2 \
--with-suexec-caller=wwwrun \
--with-suexec-docroot=/srv/www \
--with-suexec-logfile=/var/log/apache2/suexec.log \
--with-suexec-userdir=public_html \
--with-suexec-uidmin=96 \
--with-suexec-gidmin=96 \
--with-suexec-safepath=/usr/local/bin:/usr/bin:/bin
Конфигурация вроде работает без ошибок
Тогда я выдаю:
# make
Я получаю эти ошибки:
/usr/local/apr/build-1/libtool --silent --mode=link gcc -std=gnu99 -pthread -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -g -fPIC -Wall -fno-strict-aliasing -DLDAP_DEPRECATED -L/usr/local/ssl/lib -lssl -lcrypto -ldl -luuid -lrt -lcrypt -lpthread -pie \
-o ab ab.lo /usr/local/apr/lib/libaprutil-1.la -lexpat /usr/local/apr/lib/libapr-1.la -luuid -lrt -lcrypt -lpthread -lm
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: /usr/local/ssl/lib/libssl.a(s2_clnt.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/ssl/lib/libssl.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [ab] Error 1
make[2]: Leaving directory `/usr/src/httpd-2.4.16/support'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/src/httpd-2.4.16/support'
make: *** [all-recursive] Error 1
Я получаю следующие ошибки в config.log
133 conftest.c:9:28: error: ac_nonexistent.h: No such file or directory
147 conftest.c:59: error: expected ';', ',' or ')' before 'text'
148-157
conftest.c: In function 'main':
conftest.c:111: warning: implicit declaration of function 'test_restrict'
conftest.c:113: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'newvar'
conftest.c:113: error: 'newvar' undeclared (first use in this function)
conftest.c:113: error: (Each undeclared identifier is reported only once
conftest.c:113: error: for each function it appears in.)
conftest.c:123: error: 'for' loop initial declaration used outside C99 mode
configure:6017: $? = 1
configure: failed program was:
| /* confdefs.h */
380/438 conftest.c:52:26: error: minix/config.h: No such file or directory
535/607 conftest.c:66:27: error: sys/processor.h: No such file or directory
658/731 conftest.c:67:21: error: sys/sdt.h: No such file or directory
773/846 conftest.c:67:25: error: sys/loadavg.h: No such file or directory
1490/1588 conftest.c:92:21: error: bstring.h: No such file or directory
linux
apache-http-server
openssl
make
AllisonC
источник
источник
Ответы:
Что ж, спасибо вам за сборку на заказ! Напоминает мне старые добрые времена!
Тем не менее, это, кажется, ключевая ошибка:
По моему опыту, это происходит из-за того, что статическая библиотека является 32-битной по сравнению с требованиями make, которые будут 64-битными. И поскольку это элемент SSL, кажется, что все происходит из самого OpenSSL 1.0.1g.
Просмотр инструкций по компиляции на официальном сайте OpenSSL показывает, что различные конфигурации существуют для разных систем, и их можно просмотреть, выполнив эту
./configure
команду из исходного кода; скачать отсюда :Я получаю вывод:
Я не вижу ничего похожего на SUSE Linux Enterprise Server 11, но я предполагаю, что
./configure
процесс скомпилировал 32-битную версию? Я предполагаю, что, возможно, ваша./configure
команда для OpenSSL должна явно указать, для какой архитектуры вы хотите скомпилировать?Такие как комманд как:
И даже добавляя в свои варианты, использовавшиеся ранее, вот так:
А потом пролистайте целое
make
иmake install
обработайте снова.Но моя интуиция подсказывает мне, что все это зависит от того, что 32-битный код портит компиляцию в 64-битной системе.
источник