2011-10-19 3 views
0

CPP 코드에서 make 명령을 실행했습니다. 다음과 같은 오류 메시지가 표시됩니다. /home/itaymoav/dev/phpext/sitel/build/entities.cpp: In function ‘void googleset_free_storage(void*)’:
오류가있는 함수의 진입 점을 표시하는 것을 제외하고는 더 이상 데이터를 제공하지 않습니다. 적절한 오류 메시지를 얻기위한 플래그 또는 다른 방법이 있습니까?MAKE에서 더 나은 오류 메시지를 얻는 방법?

메이크 -> 나는 그것이 큰 알아 ...

srcdir = /home/itaymoav/dev/phpext/build 
builddir = /home/itaymoav/dev/phpext/build 
top_srcdir = /home/itaymoav/dev/phpext/build 
top_builddir = /home/itaymoav/dev/phpext/build 
EGREP = /bin/grep -E 
SED = /bin/sed 
CONFIGURE_COMMAND = './configure' '--enable-entities' 
CONFIGURE_OPTIONS = '--enable-entities' 
SHLIB_SUFFIX_NAME = so 
SHLIB_DL_SUFFIX_NAME = so 
ZEND_EXT_TYPE = zend_extension 
RE2C = exit 0; 
AWK = gawk 
ENTITIES_SHARED_LIBADD = -lstdc++ 
shared_objects_entities = entities.lo GoogleSet.lo 
PHP_PECL_EXTENSION = entities 
PHP_MODULES = $(phplibdir)/entities.la 
PHP_ZEND_EX = 
all_targets = $(PHP_MODULES) $(PHP_ZEND_EX) 
install_targets = install-modules install-headers 
prefix = /usr 
exec_prefix = $(prefix) 
libdir = ${exec_prefix}/lib 
prefix = /usr 
phplibdir = /home/itaymoav/dev/phpext/build/modules 
phpincludedir = /usr/include/php5 
CC = cc 
CFLAGS = -g -O2 
CFLAGS_CLEAN = $(CFLAGS) 
CPP = cc -E 
CPPFLAGS = -DHAVE_CONFIG_H 
CXX = g++ 
CXXFLAGS = -g -O2 
CXXFLAGS_CLEAN = $(CXXFLAGS) 
EXTENSION_DIR = /usr/lib/php5/20090626+lfs 
PHP_EXECUTABLE = /usr/bin/php 
EXTRA_LDFLAGS = 
EXTRA_LIBS = 
INCLUDES = -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 
LFLAGS = 
LDFLAGS = 
SHARED_LIBTOOL = 
LIBTOOL = $(SHELL) $(top_builddir)/libtool 
SHELL = /bin/bash 
INSTALL_HEADERS = 
mkinstalldirs = $(top_srcdir)/build/shtool mkdir -p 
INSTALL = $(top_srcdir)/build/shtool install -c 
INSTALL_DATA = $(INSTALL) -m 644 

DEFS = -DPHP_ATOM_INC -I$(top_builddir)/include -I$(top_builddir)/main -I$(top_srcdir) 
COMMON_FLAGS = $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(PHP_FRAMEWORKPATH) 

all: $(all_targets) 
    @echo 
    @echo "Build complete." 
    @echo "Don't forget to run 'make test'." 
    @echo 

build-modules: $(PHP_MODULES) $(PHP_ZEND_EX) 

libphp$(PHP_MAJOR_VERSION).la: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) 
    $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -rpath $(phptempdir) $(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o [email protected] 
    [email protected]$(LIBTOOL) --silent --mode=install cp [email protected] $(phptempdir)/[email protected] >/dev/null 2>&1 

libs/libphp$(PHP_MAJOR_VERSION).bundle: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) 
    $(CC) $(MH_BUNDLE_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(PHP_FRAMEWORKS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o [email protected] && cp [email protected] libs/libphp$(PHP_MAJOR_VERSION).so 

install: $(all_targets) $(install_targets) 

install-sapi: $(OVERALL_TARGET) 
    @echo "Installing PHP SAPI module:  $(PHP_SAPI)" 
    [email protected]$(mkinstalldirs) $(INSTALL_ROOT)$(bindir) 
    [email protected] test ! -r $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME); then \ 
     for i in 0.0.0 0.0 0; do \ 
      if test -r $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME).$$i; then \ 
       $(LN_S) $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME).$$i $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME); \ 
       break; \ 
      fi; \ 
     done; \ 
    fi 
    @$(INSTALL_IT) 

install-modules: build-modules 
    @test -d modules && \ 
    $(mkinstalldirs) $(INSTALL_ROOT)$(EXTENSION_DIR) 
    @echo "Installing shared extensions:  $(INSTALL_ROOT)$(EXTENSION_DIR)/" 
    @rm -f modules/*.la >/dev/null 2>&1 
    @$(INSTALL) modules/* $(INSTALL_ROOT)$(EXTENSION_DIR) 

install-headers: 
    [email protected] test "$(INSTALL_HEADERS)"; then \ 
     for i in `echo $(INSTALL_HEADERS)`; do \ 
      i=`$(top_srcdir)/build/shtool path -d $$i`; \ 
      paths="$$paths $(INSTALL_ROOT)$(phpincludedir)/$$i"; \ 
     done; \ 
     $(mkinstalldirs) $$paths && \ 
     echo "Installing header files:   $(INSTALL_ROOT)$(phpincludedir)/" && \ 
     for i in `echo $(INSTALL_HEADERS)`; do \ 
      if test "$(PHP_PECL_EXTENSION)"; then \ 
       src=`echo $$i | $(SED) -e "s#ext/$(PHP_PECL_EXTENSION)/##g"`; \ 
      else \ 
       src=$$i; \ 
      fi; \ 
      if test -f "$(top_srcdir)/$$src"; then \ 
       $(INSTALL_DATA) $(top_srcdir)/$$src $(INSTALL_ROOT)$(phpincludedir)/$$i; \ 
      elif test -f "$(top_builddir)/$$src"; then \ 
       $(INSTALL_DATA) $(top_builddir)/$$src $(INSTALL_ROOT)$(phpincludedir)/$$i; \ 
      else \ 
       (cd $(top_srcdir)/$$src && $(INSTALL_DATA) *.h $(INSTALL_ROOT)$(phpincludedir)/$$i; \ 
       cd $(top_builddir)/$$src && $(INSTALL_DATA) *.h $(INSTALL_ROOT)$(phpincludedir)/$$i) 2>/dev/null || true; \ 
      fi \ 
     done; \ 
    fi 

PHP_TEST_SETTINGS = -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' 
PHP_TEST_SHARED_EXTENSIONS = ` \ 
    if test "x$(PHP_MODULES)" != "x"; then \ 
     for i in $(PHP_MODULES)""; do \ 
      . $$i; $(top_srcdir)/build/shtool echo -n -- " -d extension=$$dlname"; \ 
     done; \ 
    fi; \ 
    if test "x$(PHP_ZEND_EX)" != "x"; then \ 
     for i in $(PHP_ZEND_EX)""; do \ 
      . $$i; $(top_srcdir)/build/shtool echo -n -- " -d $(ZEND_EXT_TYPE)=$(top_builddir)/modules/$$dlname"; \ 
     done; \ 
    fi` 
PHP_DEPRECATED_DIRECTIVES_REGEX = '^(define_syslog_variables|register_(globals|long_arrays)?|safe_mode|magic_quotes_(gpc|runtime|sybase)?|(zend_)?extension(_debug)?(_ts)?)[\t\ ]*=' 

test: all 
    [email protected] test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \ 
     INI_FILE=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r 'echo php_ini_loaded_file();' 2> /dev/null`; \ 
     if test "$$INI_FILE"; then \ 
      $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_FILE" > $(top_builddir)/tmp-php.ini; \ 
     else \ 
      echo > $(top_builddir)/tmp-php.ini; \ 
     fi; \ 
     INI_SCANNED_PATH=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r '$$a = explode(",\n", trim(php_ini_scanned_files())); echo $$a[0];' 2> /dev/null`; \ 
     if test "$$INI_SCANNED_PATH"; then \ 
      INI_SCANNED_PATH=`$(top_srcdir)/build/shtool path -d $$INI_SCANNED_PATH`; \ 
      $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_SCANNED_PATH"/*.ini >> $(top_builddir)/tmp-php.ini; \ 
     fi; \ 
     TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \ 
     TEST_PHP_SRCDIR=$(top_srcdir) \ 
     CC="$(CC)" \ 
      $(PHP_EXECUTABLE) -n -c $(top_builddir)/tmp-php.ini $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n -c $(top_builddir)/tmp-php.ini -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \ 
    else \ 
     echo "ERROR: Cannot run tests without CLI sapi."; \ 
    fi 

clean: 
    find . -name \*.gcno -o -name \*.gcda | xargs rm -f 
    find . -name \*.lo -o -name \*.o | xargs rm -f 
    find . -name \*.la -o -name \*.a | xargs rm -f 
    find . -name \*.so | xargs rm -f 
    find . -name .libs -a -type d|xargs rm -rf 
    rm -f libphp$(PHP_MAJOR_VERSION).la $(SAPI_CLI_PATH) $(OVERALL_TARGET) modules/* libs/* 

distclean: clean 
    rm -f Makefile config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h stamp-h sapi/apache/libphp$(PHP_MAJOR_VERSION).module buildmk.stamp 
    $(EGREP) define'.*include/php' $(top_srcdir)/configure | $(SED) 's/.*>//'|xargs rm -f 

.PHONY: all clean install distclean test 
.NOEXPORT: 
entities.lo: /home/itaymoav/dev/phpext/build/entities.cpp 
    $(LIBTOOL) --mode=compile $(CXX) -I. -I/home/itaymoav/dev/phpext/build $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/itaymoav/dev/phpext/build/entities.cpp -o entities.lo 
GoogleSet.lo: /home/itaymoav/dev/phpext/build/GoogleSet.cpp 
    $(LIBTOOL) --mode=compile $(CXX) -I. -I/home/itaymoav/dev/phpext/build $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/itaymoav/dev/phpext/build/GoogleSet.cpp -o GoogleSet.lo 
$(phplibdir)/entities.la: ./entities.la 
    $(LIBTOOL) --mode=install cp ./entities.la $(phplibdir) 

./entities.la: $(shared_objects_entities) $(ENTITIES_SHARED_DEPENDENCIES) 
    $(LIBTOOL) --mode=link $(CC) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o [email protected] -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $(shared_objects_entities) $(ENTITIES_SHARED_LIBADD) 
+0

이 문제는 g ++와 관련이 없으며 makefile에 문제가 있습니다. 불행히도 출력을 제거하는 makefile 부분을 포함시키지 않으므로 주어진 정보로 문제를 해결할 수 있습니다. –

+0

@ Loki Astari phpize + .configure를 실행하면 기본 Make 파일이됩니다. –

+0

내 의견은 변경되지 않습니다. 우리가 필요로하는 makefile의 부분은 여기에 없다. 이 mkaefile은 다른 makefile에서 포함될 수 있습니다. 그러나 조금은 컴파일러가 호출 된 것이고 여기에는 기본 옵션이 없기 때문에 여분의 출력은 제거되지 않습니다. –

답변

0

당신은 당신의 Makefile 및 규칙을 검사가 포함 파일을해야합니다. .cpp.o으로 컴파일하기위한 규칙을 찾고 컴파일 출력에서 ​​어떤 필터링을하는지보십시오. 컴파일러의 출력을 의도적으로 제한하여 일반 컴파일을 간략하게 만들려면이를 재정의하도록 설정할 수있는 플래그가 있어야합니다. 리눅스 커널 (그리고 많은 관련 Makefile)은 QUIET 플래그를 사용하므로 make QUIET=''을 사용하면 간결한 출력을 비활성화하고 모든 것을 볼 수 있습니다.

빌드 규칙에 오류가 숨겨져있는 경우 버그가있을 수 있습니다. 당신이 그것을 발견하고 귀하의 질문에 그것을 추가 할 수 있다면 누군가 그것을 고칠 방법을 알고있을 수 있습니다.

+0

phpize /.configure에 의해 자동 생성됩니다 (이 글에서 nub라고 언급 했습니까?). 내 요점은 거대하다. –

0

인용 한 줄은 실제 오류 메시지가 아닙니다. 그것은 단지 두 줄 중 첫 줄에 불과합니다. 다음 줄에는 정말 흥미로운 내용이 들어 있습니다.

드문 경우에만 이 없으므로 두 번째 줄을 걱정해야합니다. 때문에 누군가가 오류 메시지의 일부를 억제하기 위해 컴파일러를 감쌌다.

관련 문제