Как получить лучшие сообщения об ошибках в MAKE? - PullRequest
0 голосов
/ 19 октября 2011

Я запускаю команду make для кода CPP.Я получаю сообщения об ошибках типа: /home/itaymoav/dev/phpext/sitel/build/entities.cpp: In function ‘void googleset_free_storage(void*)’:
Как видно, кроме того, что показывает точку входа функции с ошибками, она больше не дает мне данных.Есть ли флаг или какой-то другой способ получить правильные сообщения об ошибках?

MakeFile -> Я знаю, что это большой ...

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 $@
    -@$(LIBTOOL) --silent --mode=install cp $@ $(phptempdir)/$@ >/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 $@ && cp $@ libs/libphp$(PHP_MAJOR_VERSION).so

install: $(all_targets) $(install_targets)

install-sapi: $(OVERALL_TARGET)
    @echo "Installing PHP SAPI module:       $(PHP_SAPI)"
    -@$(mkinstalldirs) $(INSTALL_ROOT)$(bindir)
    -@if 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:
    -@if 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
    -@if 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 $@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $(shared_objects_entities) $(ENTITIES_SHARED_LIBADD)

Ответы [ 2 ]

0 голосов
/ 19 октября 2011

Указанная вами строка не является реальным сообщением об ошибке. Это только первая из двух строк. Следующая строка содержит действительно интересные вещи.

И только в том редком случае, когда не вторая строка, вы должны волноваться Потому что тогда кто-то обернул компилятор, чтобы скрыть некоторые из его сообщений об ошибках.

0 голосов
/ 19 октября 2011

Вам придется проверить ваш Makefile и все файлы правил, которые он включает. Найдите правило для компиляции .cpp в .o и посмотрите, какую фильтрацию он выполняет в выходных данных компиляции. Если он намеренно ограничивает вывод компилятора, чтобы сделать обычные компиляции менее подробными, он, вероятно, будет иметь флаг, который вы можете установить для его переопределения. Ядро Linux (и многие связанные Make-файлы) используют для этой цели флаг QUIET, поэтому вы можете сделать make QUIET='', чтобы отключить краткий вывод и увидеть все.

Если правило сборки скрывает ошибки, возможно, в нем есть ошибка. Если вы можете найти его и добавить к своему вопросу, кто-то может знать, как это исправить.

...