xdswglw 发表于 2009-7-6 13:52:40

求教!JAWS编译出错!

:'( 我在Fedora Core 10下面编译$ACE_ROOT/apps/JAWS/server的时候出现这样的错误,请问该如何解决啊?
我是按照README下面的编译步骤来执行的:
1、make clean
2、make depend
3、make
执行到第三步make的时候就出现了以下的错误了。
-------------------------------------------------------------------------------------
make: Entering directory `/home/smart/ACE_wrappers/apps/JAWS/server'
/home/smart/ACE_wrappers/include/makeinclude/wrapper_macros.GNU:319: /home/smart/ACE_wrappers/include/makeinclude/platform_macros.GNU: 没有那个文件或目录
Installing platform_macros.GNU -> /home/smart/ACE_wrappers/include/makeinclude
ln -s ../../apps/JAWS/server//platform_macros.GNU /home/smart/ACE_wrappers/include/makeinclude/platform_macros.GNU
Installing platform_macros.GNU -> /home/smart/ACE_wrappers/include/makeinclude
ln -s ../../apps/JAWS/server//platform_macros.GNU /home/smart/ACE_wrappers/include/makeinclude/platform_macros.GNU
GNUmakefile: /home/smart/ACE_wrappers/apps/JAWS/server/GNUmakefile.JAWS MAKEFLAGS=w
o libJAWS.so.5.7.0 .shobj/HTTP_Server.o .shobj/HTTP_Config.o .shobj/HTTP_Handler.o .shobj/HTTP_Helpers.o .shobj/JAWS_Pipeline.o .shobj/JAWS_Concurrency.o .shobj/HTTP_Request.o .shobj/HTTP_Response.o .shobj/Parse_Headers.o .shobj/JAWS_IO.o -L../../../lib -L. -L../../../lib -lACE
make: o:命令未找到
make: 错误 127 (忽略)
rm -f libJAWS.so
/home/smart/ACE_wrappers/bin/add_rel_link.sh libJAWS.so.5.7.0 libJAWS.so
ln -s libJAWS.so.5.7.0 libJAWS.so
chmod a+rx libJAWS.so.5.7.0
chmod: 无法访问 “libJAWS.so.5.7.0”: 没有那个文件或目录
make: 错误 1 (忽略)
Installing libJAWS.so -> ../../../lib
ln -s ../apps/JAWS/server//libJAWS.so.5.7.0 ../../../lib/libJAWS.so
Installing libJAWS.so.5.7.0 -> ../../../lib
ln -s ../apps/JAWS/server//libJA
WS.so.5.7.0 ../../../lib/libJAWS.so.5.7.0
make: Leaving directory `/home/smart/ACE_wrappers/apps/JAWS/server'
make: Entering directory `/home/smart/ACE_wrappers/apps/JAWS/server'
/home/smart/ACE_wrappers/include/makeinclude/wrapper_macros.GNU:319: /home/smart/ACE_wrappers/include/makeinclude/platform_macros.GNU: 没有那个文件或目录
Installing platform_macros.GNU -> /home/smart/ACE_wrappers/include/makeinclude
ln -s ../../apps/JAWS/server//platform_macros.GNU /home/smart/ACE_wrppers/include/makeinclude/platform_macros.GNU
Installing platform_macros.GNU -> /home/smart/ACE_wrappers/include/makeinclude
ln -s ../../apps/JAWS/server//platform_macros.GNU /home/smart/ACE_wrappers/include/makeinclude/platform_macros.GNU
JAWS_server will not be built due to the following missing library:
JAWS
GNUmakefile: /home/smart/ACE_wrappers/apps/JAWS/server/GNUmakefile.JAWS_server MAKEFLAGS=w
make: Leaving directory `/home/smart/ACE_wrappers/apps/JAWS/server'
-------------------------------------------------------------------------------------
我按着错误提示寻找,发现是server/目录下没有libJAWS.so.5.7.0这个文件引起的。可是我在$ACE_ROOT/lib下也没有找到这个文件,为什么呢?我该到哪去找这个文件?我的ACE-5.7是照mkdir build、cd build、../configure、make、make install的过程下来安装成功的,难道是默认情况下没有生成JAWS对应的库文件?可我查看了所生成Makefile文件后感觉不应该是这个原因。
    这两天被这个问题弄晕了,希望能得到大家的帮助!
    感激不尽!!!!!

winston 发表于 2009-7-6 14:33:06

这个文件:platform_macros.GNU
自己创建。
在ACE-INSTALL.HTML中的Using the Traditional ACE/GNU Configuration一节有说明:

Using the Traditional ACE/GNU Configuration
Here's what you need to do to build ACE using GNU Make and ACE's traditional per-platform configuration method:

Install GNU make 3.79.1 or greater on your system (available via http anonymous ftp from ftp.gnu.org in the pub/gnu/make/ directory). You must use GNU make when using ACE's traditional per-platform configuration method or ACE won't compile.
Add an environment variable called ACE_ROOT that contains the name of the root of the directory where you keep the ACE wrapper source tree. The ACE recursive Makefile scheme needs this information. There are several ways to set the ACE_ROOT variable. For example:
TSCH/CSH: setenv ACE_ROOT /home/cs/faculty/schmidt/ACE_wrappers
BASH or Bourne Shell: ACE_ROOT=/home/cs/faculty/schmidt/ACE_wrappers; export ACE_ROOT
If you're building a number of versions of ACE, however, (e.g., for different OS platforms or for different releases of ACE) you might use the following approach (assuming TCSH/CSH):

setenv ACE_ROOT $cwd
Create a configuration file, $ACE_ROOT/ace/config.h, that includes the appropriate platform/compiler-specific header configurations from the ACE source directory. For example:
#include "ace/config-linux.h"
The platform/compiler-specific configuration file contains the #defines that are used throughout ACE to indicate which features your system supports. See the $ACE_ROOT/ace/README file for a description of these macro settings. If you desire to add some site-specific or build-specific changes, you can add them to your config.h file; place them before the inclusion of the platform-specific header file.
There are config files for most versions of UNIX. If there isn't a version of this file that matches your platform/compiler, you'll need to make one. Please send email to the ace-users list if you get it working so it can be added to the master ACE release.

Create a build configuration file, $ACE_ROOT/include/makeinclude/platform_macros.GNU, that contains the appropriate platform/compiler-specific Makefile configurations, e.g.,
include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
This file contains the compiler and Makefile directives that are platform/compiler-specific. If you'd like to add make options, you can add them before including the platform-specific configuration.
NOTE! There really is not a # character before 'include' in the platform_macros.GNU file. # is a comment character.

Note that because ACE builds shared libraries, you'll need to set LD_LIBRARY_PATH (or equivalent for your platform) to the directory where binary version of the ACE library is built into. For example, you probably want to do something like the following:
% setenv LD_LIBRARY_PATH $ACE_ROOT/lib:$LD_LIBRARY_PATH
When all this is done, hopefully all you'll need to do is type:
% make
at the ACE_ROOT directory. This will build the ACE library, tests, the examples, and the sample applications. Building the entire ACE release can take a long time and consume lots of disk space, however. Therefore, you might consider cd'ing into the $ACE_ROOT/ace directory and running make there to build just the ACE library. As a sanity check, you might also want to build and run the automated "one-button" tests in $ACE_ROOT/tests. Finally, if you're also planning on building TAO, you should build the gperf perfect hash function generator application in $ACE_ROOT/apps/gperf.
If you need to regenerate the ace/Svc_Conf_y.cpp file, you'll need to get GNU Bison. However, you should rarely, if ever, need to do this.

xdswglw 发表于 2009-7-7 13:23:48

果然是这问题,现在解决了。
Thanks!!:handshake
页: [1]
查看完整版本: 求教!JAWS编译出错!