g ++编译器错误 - g ++:错误:spawn:没有这样的文件或目录

时间:2015-04-09 14:57:52

标签: makefile g++ cygwin

我正在尝试使用生成的带有角色的makefile编译.ttcn文件,以创建.cc和.hh文件。 但是当我运行make命令时我的.o文件有问题,它没有生成,因此我的.exe也没有生成

这是我的错误和我的Makefile:

生成文件:

# This Makefile was generated by the Makefile Generator
# of the TTCN-3 Test Executor version CRL 113 200/5 R2A
# for U-TMV\qi11091 (qi11091@WMUC-0118) on Thu Apr  9 16:49:49 2015

# Copyright Ericsson Telecom AB 2000-2014

# The following make commands are available:
# - make, make all      Builds the executable test suite.
# - make archive        Archives all source files.
# - make check          Checks the semantics of TTCN-3 and ASN.1 modules.
# - make clean          Removes all generated files.
# - make compile        Translates TTCN-3 and ASN.1 modules to C++.
# - make dep            Creates/updates dependency list.
# - make executable     Builds the executable test suite.
# - make library        Builds the library archive.
# - make objects        Builds the object files without linking the executable.
# WARNING! This Makefile can be used with GNU make only.
# Other versions of make may report syntax errors in it.

#
# Do NOT touch this line...
#
.PHONY: all shared_objects executable library objects check clean dep archive

.SUFFIXES: .d

#
# Set these variables...
#

# The path of your TTCN-3 Test Executor installation:
# Uncomment this line to override the environment variable.
# TTCN3_DIR = 

# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32)
PLATFORM = WIN32

# Your C++ compiler:
# (if you change the platform, you may need to change the compiler)
CXX = g++ 

# Flags for the C++ preprocessor (and makedepend as well):
CPPFLAGS = -D$(PLATFORM) -I$(TTCN3_DIR)/include

# Flags for dependency generation
CXXDEPFLAGS = -MM

# Flags for the C++ compiler:
CXXFLAGS = -Wall  

# Flags for the linker:
LDFLAGS = 

ifeq ($(PLATFORM), WIN32)
# Silence linker warnings.
LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc
endif

# Utility to create library files
AR = ar
ARFLAGS = 

# Flags for the TTCN-3 and ASN.1 compiler:
COMPILER_FLAGS = -L  

# Execution mode: (either ttcn3 or ttcn3-parallel)
TTCN3_LIB = ttcn3-parallel

# The path of your libxml2 installation:
# If you do not have your own one, leave it unchanged.
XMLDIR = $(TTCN3_DIR)

# Directory to store the archived source files:
ARCHIVE_DIR = backup

#
# You may change these variables. Add your files if necessary...
#

# TTCN-3 modules of this project:
TTCN3_MODULES = TTCN3SessionSetup.ttcn

# ASN.1 modules of this project:
ASN1_MODULES =

# C++ source & header files generated from the TTCN-3 & ASN.1 modules of
# this project:
GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc)
GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh)

# C/C++ Source & header files of Test Ports, external functions and
# other modules:
USER_SOURCES =
USER_HEADERS = $(USER_SOURCES:.cc=.hh)

# Object files of this project that are needed for the executable test suite:
OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS)

GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o)

USER_OBJECTS = $(USER_SOURCES:.cc=.o)

DEPFILES = $(USER_OBJECTS:.o=.d)  $(GENERATED_OBJECTS:.o=.d)

# Other files of the project (Makefile, configuration files, etc.)
# that will be added to the archived source files:
OTHER_FILES = Makefile

# The name of the executable test suite:
EXECUTABLE = TTCN3SessionSetup.exe



LIBRARY = libTTCN3SessionSetup.a

TARGET = $(EXECUTABLE)

#
# Do not modify these unless you know what you are doing...
# Platform specific additional libraries:
#
SOLARIS_LIBS = -lsocket -lnsl -lxml2
SOLARIS8_LIBS = -lsocket -lnsl -lxml2
LINUX_LIBS = -lxml2
FREEBSD_LIBS = -lxml2
WIN32_LIBS = -lxml2

#
# Rules for building the executable...
#

all: $(TARGET) ;

executable: $(EXECUTABLE) ;

library: $(LIBRARY) ;

objects: $(OBJECTS) compile;

$(EXECUTABLE): $(OBJECTS)
    if $(CXX) $(LDFLAGS) -o $@ $^ \
    -L$(TTCN3_DIR)/lib -l$(TTCN3_LIB) \
    -L$(OPENSSL_DIR)/lib -lcrypto \
    -L$(XMLDIR)/lib $($(PLATFORM)_LIBS); \
    then : ; else $(TTCN3_DIR)/bin/titanver $(OBJECTS); exit 1; fi

$(LIBRARY): $(OBJECTS)
    $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS)

.cc.o .c.o:
    $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $<

.cc.d .c.d:
    @echo Creating dependency file for '$<'; set -e; \
    $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \
    | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \
    [ -s $@ ] || rm -f $@

$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile
    @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi

check: $(TTCN3_MODULES) $(ASN1_MODULES)
    $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^

compile: $(TTCN3_MODULES) $(ASN1_MODULES)
    $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $?
    touch $@

clean:
    -$(RM) $(EXECUTABLE) $(LIBRARY) $(OBJECTS) $(GENERATED_HEADERS) \
    $(GENERATED_SOURCES) compile $(DEPFILES) \
    tags *.log

dep: $(GENERATED_SOURCES) $(USER_SOURCES) ; 

ifeq ($(findstring n,$(MAKEFLAGS)),)
ifeq ($(filter clean check compile archive diag,$(MAKECMDGOALS)),)
-include $(DEPFILES)
endif
endif

archive:
    mkdir -p $(ARCHIVE_DIR)
    tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \
    $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \
    | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz

diag:
    $(TTCN3_DIR)/bin/compiler -v 2>&1
    $(TTCN3_DIR)/bin/mctr_cli -v 2>&1
    $(CXX) -v 2>&1
    $(AR) -V 2>&1
    @echo TTCN3_DIR=$(TTCN3_DIR)
    @echo OPENSSL_DIR=$(OPENSSL_DIR)
    @echo XMLDIR=$(XMLDIR)
    @echo PLATFORM=$(PLATFORM)

#
# Add your rules here if necessary...
#

这是我的错误

qi11091@WMUC-0118 ~/Documents/TITAN_Command_Line/FirstTest
$ make
/cygdrive/c/Users/qi11091/Documents/TITAN_files/TITAN/bin/compiler -L      TTCN3Ses      sionSetup.ttcn - TTCN3SessionSetup.ttcn
Notify: Parsing TTCN-3 module `TTCN3SessionSetup.ttcn'...
Notify: Checking modules...
Notify: Generating code...
Notify: File `TTCN3SessionSetup.hh' was generated.
Notify: File `TTCN3SessionSetup.cc' was generated.
Notify: 2 files were updated.
touch compile
Creating dependency file for TTCN3SessionSetup.cc
g++: Fehler: spawn: No such file or directory
g++  -c -DWIN32 -I/cygdrive/c/Users/qi11091/Documents/TITAN_files/TITAN    /include       -Wall   -o TTCN3SessionSetup.o TTCN3SessionSetup.cc
g++: Fehler: spawn: No such file or directory
Makefile:151: die Regel für Ziel „TTCN3SessionSetup.o“ scheiterte
make: *** [TTCN3SessionSetup.o] Fehler 1

1 个答案:

答案 0 :(得分:0)

如果这是你看到的输出的精确副本,那么一个问题是:

g++  -c -DWIN32 -I/cygdrive/c/Users/qi11091/Documents/TITAN_files/TITAN    /include       -Wall   -o TTCN3SessionSetup.o TTCN3SessionSetup.cc

请注意.../TITAN_files/TITAN/include之间的所有空格。那个空格使编译器认为这些是单独的参数,看起来你正试图将“文件”/include添加到编译行,当然不存在。

你的makefile实际上并没有设置TTCN3_DIR变量,在这个例子中,所以我不知道那个值来自哪里,但无论它在哪里,你需要确保没有空格。价值结束。