Назад | Перейти на главную страницу

Сбой компиляции libmemcached на Centos

Я пытаюсь скомпилировать libmemcached на Centos 6.4 с gcc 4.8.2. Я запустил configure, который дает мне:

Configuration summary for libmemcached version 1.0.17

   * Installation prefix:       /usr/local
   * System type:               unknown-linux-gnu
   * Host CPU:                  x86_64
   * C Compiler:                gcc (GCC) 4.8.2
   * C Flags:                   -g -O2  -Wno-unknown-pragmas -Wno-pragmas -Wall -Wextra -std=c99 -Wunsuffixed-float-constants -Wjump-misses-init -Wno-attributes -Waddress -Wvarargs -Warray-bounds -Wbad-function-cast -Wchar-subscripts -Wcomment -Wfloat-equal -Wformat-security -Wformat=2 -Wformat-y2k -Wlogical-op -Wmaybe-uninitialized -Wmissing-field-initializers -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wnormalized=id -Woverride-init -Wpointer-arith -Wpointer-sign -Wredundant-decls -Wshadow -Wsign-compare -Wstrict-overflow=1 -Wswitch-enum -Wtrampolines -Wundef -Wunsafe-loop-optimizations -funsafe-loop-optimizations -fsanitize=address -fsanitize=thread -Wclobbered -Wunused -Wunused-result -Wunused-variable -Wunused-parameter -Wunused-local-typedefs -Wwrite-strings -fwrapv -pipe
   * C++ Compiler:              g++ (GCC) 4.8.2
   * C++ Flags:                 -g -O2 -Wno-unknown-pragmas -Wno-pragmas -Wall -Wextra -Wno-attributes -Wvarargs -Waddress -Warray-bounds -Wchar-subscripts -Wcomment -Wctor-dtor-privacy -Wfloat-equal -Wformat=2 -Wformat-y2k -Wmaybe-uninitialized -Wmissing-field-initializers -Wlogical-op -Wnon-virtual-dtor -Wnormalized=id -Woverloaded-virtual -Wpointer-arith -Wredundant-decls -Wshadow -Wsign-compare -Wstrict-overflow=1 -Wswitch-enum -Wtrampolines -Wundef -Wunsafe-loop-optimizations -funsafe-loop-optimizations -Wc++11-compat -fsanitize=address -fsanitize=thread -Wclobbered -Wunused -Wunused-result -Wunused-variable -Wunused-parameter -Wunused-local-typedefs -Wwrite-strings -Wformat-security -fwrapv -pipe
   * CPP Flags:                  -fvisibility=hidden
   * LIB Flags:                 
   * Assertions enabled:        no
   * Debug enabled:             no
   * Shared:                    yes
   * Warnings as failure:       no
   * SASL support:              yes
   * make -j:                   2
   * VCS checkout:              no

Но после запуска make всегда получаю:

g++: error: -fsanitize=address is incompatible with -fsanitize=thread

Что означает эта ошибка?

Похоже, это ошибка в последних версиях: https://bugs.launchpad.net/libmemcached/+bug/1169311

Скорее всего, вы не хотите создавать передовые технологии - используйте последнюю стабильную версию, особенно если вы используете производственное оборудование. Вы пробовали собрать стабильную версию?

Оба эти варианта являются вариантами clang версии g ++.

http://clang.llvm.org/docs/ThreadSanitizer.html

http://clang.llvm.org/docs/AddressSanitizer.html

И вы не можете использовать их оба одновременно при сборке исполняемого файла, поскольку они загружают несовместимые дополнительные библиотеки.

Загляните в файл config.log и попытайтесь выяснить, почему эти параметры включены в сборке. Что-то идет не так в процессе настройки, поскольку оба этих параметра значительно замедляют код и не должны настраиваться по умолчанию. Они в первую очередь предназначены для помощи в отладке ошибок времени выполнения, а не в производственном коде.

Проверьте переменные среды, связанные с g ++.