apache - 在 x86 机器(64 位)中的 Solaris 10 中编译 Apache 2.4.2 错误

标签 apache x86-64 solaris-10

我在 x86 机器(64 位)的 Solaris 10 中编译 Apache 2.4.2 时遇到困难困难

我安装了所有必需的程序,没有任何问题,但是当使用 apache 配置(或执行 make)时,它爆炸了。

我不知道问题是否出在环境变量上。我不知道哪一个失败了——如果是这种情况的话——。

这是一个迷你脚本(使用以下命令运行它: 脚本)来说明我正在做什么(注意我安装了所有内容在 /opt 中使用前缀标志):

#!/bin/sh

#Set ENV variables
export LDFLAGS=" -L/usr/sfw/lib -R/usr/sfw/lib -L/usr/X/lib -R/usr/X/lib -L/usr/X11/lib -R/usr/X11/lib -L/usr/ccs/lib -R/usr/ccs/lib "
export PATH=/usr/ccs/bin/amd64/usr/ccs/bin:/usr/sbin:/usr/bin:/usr/sfw/bin:/usr/sfw/sbin
export LD_LIBRARY_PATH=/usr/lib:/usr/sfw/lib
export LD_LIBRARY_PATH_64=/usr/lib/64:/usr/sfw/lib/64

export CFLAGS=-m64 -O3
export CPP_FLAGS=-m64 -O3
export CC=cc

#Install OPENSSL
cd /opt/build_src/source_apache_openssl/openssl-1.0.1c
./config --prefix=/opt/openssl-1.0.1c thread shared solaris64-gcc -m32
gmake clean
gmake
gmake install

#Install ARP
cd /opt/build_src/source_apache_openssl/apr-1.4.6
./configure --prefix=/opt/apr-1.4.6 --with-gnu-ld --enable-threads
gmake clean
gmake
gmake install

#Install ARP-UTIL
cd /opt/build_src/source_apache_openssl/apr-util-1.4.1
./configure --prefix=/opt/apr-util-1.4.1 --with-openssl=/opt/openssl-1.0.1c --with-apr=/opt/apr-1.4.6 --with-crypto --enable-threads 
gmake clean
gmake
gmake install

#Instalamos Apache
cd /opt/build_src/source_apache_openssl/httpd-2.4.2   ---- IT FAILS!!!

请注意环境变量。 他们还好吗???

这是我在配置 (./configure ...) Apache 时收到的错误: .... 检查构建系统类型... i386-pc-solaris2.10 检查主机系统类型... i386-pc-solaris2.10 检查目标系统类型... i386-pc-solaris2.10

Configuring Apache Portable Runtime library ...

checking for APR... yes
  setting CPP to "gcc -E"
  adding "-g" to CFLAGS
  adding "-O2" to CFLAGS
  setting CPPFLAGS to " -DSOLARIS2=10 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -   D_LARGEFILE64_SOURCE"

Configuring Apache Portable Runtime Utility library...

checking for APR-util... yes
  adding "-L/opt/openssl-1.0.1c/lib" to LDFLAGS
checking for gcc... cc
checking whether the C compiler works... no              (!!!!!)
configure: error: in `/opt/build_src/source_apache_openssl/httpd-2.4.2':  (!!!!!)
configure: error: C compiler cannot create executables     (!!!!!)
See `config.log' for more details

config.log 没有说任何相关的内容 - 最后对我来说 - 它只是列出了设置的环境变量 - 数百个!-。

尽管如此,如果我执行“gmake”时出现该错误,我会得到:

Undefined                       first referenced
 symbol                             in file
BIO_set_callback                    ab.o
BIO_set_callback_arg                ab.o
BIO_get_callback_arg                ab.o
SSL_CTX_set_info_callback           ab.o
ld: fatal: symbol referencing errors. No output written to ab
collect2: ld returned 1 exit status
gmake[2]: *** [ab] Error 1
gmake[2]: Leaving directory `/opt/build_src/source_apache_openssl/httpd-2.4.2/support'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/opt/build_src/source_apache_openssl/httpd-2.4.2/support'
gmake: *** [all-recursive] Error 1

编辑: 在遵循twalberg的建议后,我使用 GCC 而不是使用 cc 编译它,但现在我在执行 gmake 时遇到此错误:

...
ld: fatal: file ab.o: wrong ELF class: ELFCLASS32
ld: fatal: file processing errors. No output written to ab

-----other times I get-----
ld: fatal: file /opt/pcre-8.30/lib/libpcre.so: wrong ELF class: ELFCLASS32
ld: fatal: file processing errors. No output written to httpd
NOTE: I installed prce with (and without) the path to PATH=/usr/sfw/lib/64

collect2: ld returned 1 exit status
gmake[2]: *** [ab] Error 1
gmake[2]: Leaving directory `/opt/build_src/source_apache_openssl/httpd-2.4.2/support'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/opt/build_src/source_apache_openssl/httpd-2.4.2/support'
gmake: *** [all-recursive] Error 1

最佳答案

谢谢你twalberg,你在这方面给予了启发。

我必须使用 -m64 标志来编译所有内容。

我将放置我使用的迷你脚本。我希望,如果其他人也有类似的问题,这可以帮助您:

#!/bin/sh

#####################apacheInstaller####################################
# by: kani
# Pre-requisites:
# You must download and install in THIS ORDER:
#
# pcre-8.30 (ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre)
# openssl-1.0.1c (http://www.openssl.org)
# apr-1.4.6
# apr-util-1.4.1
# httpd-2.4.2 (apache)
#
# I gathered all the files in:
#     /opt/build_src/source_apache_openssl/DIRECTORIES
#
# NOTE: this was done in a Solaris 10 x86-64 bit machine!
#
# HOW TO: execute the script
# chmod u+x apacheInstaller.sh
# source ./apacheInstaller.sh 
# NOTE: source is used for the export of the ENV variables!
#######################################################################

#Set ENV variables
export LDFLAGS=" -L/usr/sfw/lib -R/usr/sfw/lib -L/usr/X/lib -R/usr/X/lib -L/usr/X11/lib -R/usr/X11/lib -L/usr/ccs/lib -R/usr/ccs/lib "
export     PATH=/usr/ccs/bin:/usr/sbin:/usr/bin:/usr/sfw/bin:/usr/sfw/sbin:/usr/ccs/bin/amd64
export LD_LIBRARY_PATH=/usr/lib:/usr/sfw/lib
export LD_LIBRARY_PATH_64=/usr/lib/64:/usr/sfw/lib/64
#Dont use CC, use GCC! This is VERY important. It wont work otherwise!!
export CC=gcc
export CFLAGS=-m64 -O3
export CPP_FLAGS=-m64 -O3

#also used:
#export LD_LIBRARY_PATH=/usr/lib/64:/usr/sfw/lib/64
#but not sure if this is needed. Maybe LD_LIBRARY_PATH_64 is enough?

#Install PCRE
#The -m64 flag is FUNDAMENTAL!!! Not sure about the others
cd /opt/build_src/source_apache_openssl/pcre-8.30
./configure --disable-cpp CFLAGS="-g -O3" CC="gcc -m64" --prefix=/opt/pcre-8.30
gmake clean
gmake
gmake install

#Install OPENSSL
cd /opt/build_src/source_apache_openssl/openssl-1.0.1c
./config --prefix=/opt/openssl-1.0.1c thread shared solaris64-gcc -m32
gmake clean
gmake
gmake install

#Install ARP
cd /opt/build_src/source_apache_openssl/apr-1.4.6
./configure --prefix=/opt/apr-1.4.6 --with-gnu-ld --enable-threads
gmake clean
gmake
gmake install

#Install ARP-UTIL
cd /opt/build_src/source_apache_openssl/apr-util-1.4.1
./configure --prefix=/opt/apr-util-1.4.1 --with-openssl=/opt/openssl-1.0.1c --with-  apr=/opt/apr-1.4.6 --with-crypto --enable-threads 
gmake clean
gmake
gmake install

#Install Apache. THE HOT PART!!
cd /opt/build_src/source_apache_openssl/httpd-2.4.2
./configure --prefix=/opt/httpd-2.4.2 --enable-so --enable-pie --enable-module=all --enable-mods-shared=all --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer --enable-ssl --with-ssl=/opt/openssl-1.0.1c --enable-static-support --enable-static-htpasswd --enable-static-htdigest --enable-static-rotatelogs --enable-static-logresolve --enable-cgi --enable-vhost --enable-imagemap --with-mpm=prefork --with-pcre=/opt/pcre-8.30 --with-apr=/opt/apr-1.4.6 --with-apr-util=/opt/apr-util-1.4.1
gmake clean
gmake
gmake install

关于apache - 在 x86 机器(64 位)中的 Solaris 10 中编译 Apache 2.4.2 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11548943/

相关文章:

java - 安装 Apache Flex SDK 4.16.0 后 Flash Builder 4.7 无法打开

php - 在 SSL/TLS 协商完成之前开始处理?

php - 重写 url 不包含布局?

ios - 体系结构 x86_64 : "_nlist" 的 undefined symbol

c++ - 汇编中 64 位结果的最快阶乘实现

c - 我不明白为什么编译器给我这个代码的错误

bash - 将 stderr 重定向到使用进程替换创建的子 shell 时出现问题

javascript - 安装 ExtJS

bash - Solaris 10,sed 在第一个 #include 语句之前插入 #include <iostream>

c++ - 在 32 位 gdb 工具上调试 64 位 C++ 应用程序