Chinaunix

标题: SCO Openserver 5.0.6 下编译Apache (1) [打印本页]

作者: 船长    时间: 2004-04-02 19:03
标题: SCO Openserver 5.0.6 下编译Apache (1)
前一段时间公司要用apache设置一个反向代理,无论如何也安装不上,我对apache不熟悉,弄了好久,终于搞定。
首先要感谢深圳技术支持部的王大海,他给了我十分关键的帮助,另外十分感谢版主sdccf,他在夜里还帮我测试apache的编译问题。没有他们的帮助我是解决不了这个问题的。

这是配置参数
# ./configure --prefix=/opt/apache --enable-module=most --enable-shared=max --en
able-module=proxy --enable-shared=proxy --enable-module=rewrite --enable-shared=
rewrite

下边是我遇到的错误,至今我也没能真正弄懂,如果那位朋友能给我详细讲讲出错的原因,不胜感激!

环境 sco 506  apache1.3.27  gcc是SCO SKUNKWARE光盘中的,后来又改用cc


错误1

# env
ENV=${_ENVFILE[(_=1)+(_$-=0)-_${-%%*i*}]}
HOME=/
HUSHLOGIN=FALSE
HZ=100
LOGNAME=root
MAIL=/usr/spool/mail/root
PATH=/bin:/etc:/usr/bin:tcb/bin:/opt/K/SKUNK2000/Gcc/2.95.2pl1/usr/local/bin
SHELL=/bin/sh
TERM=vt100
TZ=CST-8
_ENVFILE=/.kshrc
#
# ./configure --prefix=/opt/apache --enable-module=most --enable-shared=max --en
able-module=proxy --enable-shared=proxy --enable-module=rewrite --enable-shared=
rewrite
Configuring for Apache, Version 1.3.27
+ using installation path layout: Apache (config.layout)
Creating Makefile
Creating Configuration.apaci in src
+ enabling mod_so for DSO support
Creating Makefile in src
+ configured for SCO 5 platform
+ setting C compiler to gcc
+ setting C pre-processor to NOT-AVAILABLE
+ checking for system header files
+ adding selected modules
    o rewrite_module uses ConfigStart/End
      disabling DBM support for mod_rewrite
      (perhaps you need to add -ldbm, -lndbm or -lgdbm to EXTRA_LIBS)
    o dbm_auth_module uses ConfigStart/End
+ using builtin Expat
+ checking sizeof various data types
+ doing sanity check on compiler and options
** A test compilation with your Makefile configuration
** failed.  The below error output from the compilation
** test will give you an idea what is failing. Note that
** Apache requires an ANSI C Compiler, such as gcc.

======== Error Output for sanity check ========
        cd ..; gcc  -DSCO5 -DNO_DBM_REWRITEMAP -DUSE_EXPAT -I./lib/expat-lite `.
/apaci`     -o helpers/dummy helpers/dummy.c   -lsocket -lmalloc -lprot -ltinfo
-lx -lm
cpp: installation problem, cannot exec `cpp': Arg list too long
*** Error code 1 (bu21)
============= End of Error Report =============

Aborting!
#

编译错误

错误2

# make
===>; src
make[1]: Entering directory `/apache_1.3.27'
make[2]: Entering directory `/apache_1.3.27/src'
===>; src/regex
make[3]: Nothing to be done for `all'.
<=== src/regex
===>; src/os/unix
make[3]: Nothing to be done for `all'.
<=== src/os/unix
===>; src/ap
make[3]: Nothing to be done for `all'.
<=== src/ap
===>; src/main
make[3]: Nothing to be done for `all'.
<=== src/main
===>; src/lib
===>; src/lib/expat-lite
make[4]: Nothing to be done for `all'.
<=== src/lib/expat-lite
<=== src/lib
===>; src/modules
===>; src/modules/standard
make[4]: Nothing to be done for `all'.
<=== src/modules/standard
===>; src/modules/proxy
make[4]: Nothing to be done for `all'.
<=== src/modules/proxy
<=== src/modules
cc -c  -I./os/unix -I./include   -DSCO -DNO_DBM_REWRITEMAP -DUSE_HSREGEX -DUSE_E
XPAT -I./lib/expat-lite `./apaci` modules.c
cc -c  -I./os/unix -I./include   -DSCO -DNO_DBM_REWRITEMAP -DUSE_HSREGEX -DUSE_E
XPAT -I./lib/expat-lite `./apaci` buildmark.c
cc  -DSCO -DNO_DBM_REWRITEMAP -DUSE_HSREGEX -DUSE_EXPAT -I./lib/expat-lite `./ap
aci`   -Bexport -L/usr/local/lib \
      -o httpd buildmark.o modules.o modules/standard/libstandard.a main/libmain
.a ./os/unix/libos.a ap/libap.a regex/libregex.a lib/expat-lite/libexpat.a  -lPW
-lsocket -lmalloc -lcrypt_i
make[2]: Leaving directory `/apache_1.3.27/src'
make[1]: Leaving directory `/apache_1.3.27'
make[1]: Entering directory `/apache_1.3.27'
===>; src/support
make[2]: Entering directory `/apache_1.3.27/src/support'
cc  -DSCO -DNO_DBM_REWRITEMAP -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expat-lite `../
apaci` -o logresolve   -L../os/unix -L../ap logresolve.o -lm -lap -los  -lPW -ls
ocket -lmalloc -lcrypt_i
undefined                       first referenced
symbol                             in file
h_errno                             logresolve.o
inet_ntoa                           logresolve.o
inet_addr                           logresolve.o
dn_expand                           /usr/lib/libsocket.a
__dn_skipname                       /usr/lib/libsocket.a
_getshort                           /usr/lib/libsocket.a
_res                                /usr/lib/libsocket.a
__res_init                          /usr/lib/libsocket.a
inet_aton                           /usr/lib/libsocket.a
__res_search                        /usr/lib/libsocket.a
__res_query                         /usr/lib/libsocket.a
i386ld fatal: Symbol referencing errors. No output written to logresolve
make[2]: *** [logresolve] Error 13
make[2]: Leaving directory `/apache_1.3.27/src/support'
make[1]: *** [build-support] Error 1
make[1]: Leaving directory `/apache_1.3.27'
make: *** [build] Error 2

#


错误3

# make
<=== src/modules
        cc -c  -I./os/unix -I./include   -DSCO5 -K noinline -DUSE_EXPAT -I./lib/
expat-lite `./apaci` modules.c
        cc -c  -I./os/unix -I./include   -DSCO5 -K noinline -DUSE_EXPAT -I./lib/
expat-lite `./apaci` buildmark.c
        cc  -DSCO5 -K noinline -DUSE_EXPAT -I./lib/expat-lite `./apaci`   -Wl,-B
export \
              -o httpd buildmark.o modules.o  modules/standard/libstandard.a  ma
in/libmain.a  ./os/unix/libos.a  ap/libap.a  lib/expat-lite/libexpat.a  -lsocket
-lmalloc -lprot -ltinfo -lx -lm
i386ld values-Xa.o: unknown flag: Bexport
*** Error code 1 (bu21)
*** Error code 1 (bu21)
*** Error code 1 (bu21)

#


错误4

# env.
ENV=${_ENVFILE[(_=1)+(_$-=0)-_${-%%*i*}]}
EXTRA_CFLAGS= -ldbm -lndbm
HOME=/
HUSHLOGIN=FALSE
HZ=100
LOGNAME=root
MAIL=/usr/spool/mail/root
PATH=/usr/bin:/usr/ccs/bin:/bin:/usr/local/bin
SHELL=/bin/sh
TERM=vt100
TZ=CST-8
_ENVFILE=/.kshrc
# cd /apache_1.3.27
# lf
256.sh*            Makefile.tmpl      con.sh*            icons/
ABOUT_APACHE       README             conf/              logs/
Announcement       README-WIN.TXT     config.layout      pre.sh*
INSTALL            README.configure   config.status*     src/
LICENSE            WARNING-WIN.TXT    configure*
Makefile           cgi-bin/           htdocs/
# make
===>; src
===>; src/os/unix
<=== src/os/unix
===>; src/ap
<=== src/ap
===>; src/main
<=== src/main
===>; src/lib
===>; src/lib/expat-lite
<=== src/lib/expat-lite
<=== src/lib
===>; src/modules
===>; src/modules/standard
<=== src/modules/standard
===>; src/modules/proxy
<=== src/modules/proxy
<=== src/modules
        cc -c  -I./os/unix -I./include   -DSCO5 -K noinline -DNO_DBM_REWRITEMAP
-DUSE_EXPAT -I./lib/expat-lite -ldbm -lndbm `./apaci` modules.c 
        cc -c  -I./os/unix -I./include   -DSCO5 -K noinline -DNO_DBM_REWRITEMAP
-DUSE_EXPAT -I./lib/expat-lite -ldbm -lndbm `./apaci` buildmark.c
        cc  -DSCO5 -K noinline -DNO_DBM_REWRITEMAP -DUSE_EXPAT -I./lib/expat-lit
e -ldbm -lndbm `./apaci`   -Wl,-Bexport \
              -o httpd buildmark.o modules.o  modules/standard/libstandard.a  ma
in/libmain.a  ./os/unix/libos.a  ap/libap.a  lib/expat-lite/libexpat.a  -lsocket
-lmalloc -lprot -ltinfo -lx -lm
i386ld values-Xa.o: unknown flag: Bexport
*** Error code 1 (bu21)
*** Error code 1 (bu21)
*** Error code 1 (bu21)
#


错误5  编译通过,启动出现问题

# ./apachectl start
Syntax error on line 229 of /opt/apache/conf/httpd.conf:
Cannot load /opt/apache/libexec/libproxy.so into server: dynamic linker: /opt/ap
ache/bin/httpd: relocation error: symbol not found: recv
./apachectl start: httpd could not be started
#
作者: sdccf    时间: 2004-04-02 19:50
标题: SCO Openserver 5.0.6 下编译Apache (1)
我在5.0.7上用5.0.7带的gcc 2.95编译时没有遇到这些错误,可能与操作系统的版本也有关系吧。
作者: kinghood    时间: 2004-04-03 12:58
标题: SCO Openserver 5.0.6 下编译Apache (1)
下个二进制版的custom一下,我装成功了好多次
作者: sdccf    时间: 2004-04-03 13:36
标题: SCO Openserver 5.0.6 下编译Apache (1)
楼主需要编译是有特殊要求.
作者: li2002    时间: 2004-04-03 14:59
标题: SCO Openserver 5.0.6 下编译Apache (1)
我在505中编译成功过,用的也是系统的cc,有机会也用gcc编译看看
作者: 蓝色虫    时间: 2004-04-03 18:13
标题: SCO Openserver 5.0.6 下编译Apache (1)
试试
作者: hgh25emus    时间: 2004-04-04 12:56
标题: SCO Openserver 5.0.6 下编译Apache (1)
你的问题其实很普遍。我的经验是你的第一个错误才是问题的关键。后面的错误
是因为第一个错误而引起的。也就是说configure 生成的makefile 文件有问题。
思路是这样的:
   首先:configure shell程序测试你的机器环境。在当前目录下会生成一个机器环境报告文件。
   接下来configure 根据机器环境报告文件来生成makefile 文件。从这里就可以看出。你有两个基本技巧来保证你的接下来的编译成功率提高。1.修改你的环境报告文件。比如 CC= cc 而非 gcc.或反之。在将起文件属性该为不可写。使得configure 只执行后半部分(生成makefile文件。)其中编译时的参数,你可对比gcc 做相应的调整。2.直接修改你的configure 文件的前半部分。最主要是确认你的编译器。通常他会生成一个简单的test.c用gcc来编译。如果你的系统有
gcc可以调用。这时系统就确定你的编译用gcc.我的经验是如果你接下来的编译
不成功的话。有两种可能:1是gcc是可以调用。但相对于gcc的编译环境(gcc 的标准库)有问题我吃过这种苦头。2当前的gcc 版本太低不支持当前程序的编译。比如include文件中没有一些大的数据类型的定义等。
作者: hgh25emus    时间: 2004-04-04 12:59
标题: SCO Openserver 5.0.6 下编译Apache (1)
还想写一点,老板来了。886!下次吧。
作者: 船长    时间: 2004-04-04 17:51
标题: SCO Openserver 5.0.6 下编译Apache (1)
[quote]原帖由 "hgh25emus"]还想写一点,老板来了。886!下次吧。[/quote 发表:

谢谢您了,用葛朗台的话说“金子哪怕一点点也是宝贵的”,呵呵
有空您再写写:)




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2