#c
Вопрос:
Проект в libmemcached, я использую CentOS Linux выпуска 7.4.1708. Я проверил файл cstdlib строки 151, 164, они должны быть в стандартной библиотеке C . И malloc and realloc has not been declared
сбивает меня с толку.
$ make
make all-am
make[1]: Entering directory `/home/tiina/clearwater/sprout/modules/libmemcached'
CXX libhashkit/libhashkit_libhashkit_la-aes.lo
In file included from /opt/rh/devtoolset-9/root/usr/include/c /9/stdlib.h:36,
from ./libhashkit/common.h:45,
from libhashkit/aes.cc:38:
/opt/rh/devtoolset-9/root/usr/include/c /9/cstdlib:151:11: error: '::malloc' has not been declared
151 | using ::malloc;
| ^~~~~~
/opt/rh/devtoolset-9/root/usr/include/c /9/cstdlib:164:11: error: '::realloc' has not been declared
164 | using ::realloc;
| ^~~~~~~
In file included from ./libhashkit/common.h:45,
from libhashkit/aes.cc:38:
/opt/rh/devtoolset-9/root/usr/include/c /9/stdlib.h:65:12: error: 'std::malloc' has not been declared
65 | using std::malloc;
| ^~~~~~
/opt/rh/devtoolset-9/root/usr/include/c /9/stdlib.h:73:12: error: 'std::realloc' has not been declared
73 | using std::realloc;
| ^~~~~~~
make[1]: *** [libhashkit/libhashkit_libhashkit_la-aes.lo] Error 1
make[1]: Leaving directory `/home/tiina/clearwater/sprout/modules/libmemcached'
Информация о gcc, которую я использовал:
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c ,fortran,lto --prefix=/opt/rh/devtoolset-9/root/usr --mandir=/opt/rh/devtoolset-9/root/usr/share/man --infodir=/opt/rh/devtoolset-9/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --with-default-libstdcxx-abi=gcc4-compatible --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-9.3.1-20200408/obj-x86_64-redhat-linux/isl-install --disable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC)
РЕДАКТИРОВАТЬ: После того, как я попробовал удаленно, я нашел это AC_FUNC_MALLOC
в configure.переменный ток вызывает эту ошибку. Удалите его, и ошибка исчезнет. Вот в чем причина:
::malloc не был объявлен
Комментарии:
1. @S. M. Но я использую CentOS Linux выпуска 7.4.1708. Что я должен сказать?
2. @S. M. /opt/rh/devtoolset-9/root/ — это расположение официальных пакетов devtoolset от Red Hat, это в основном более новые версии цепочек инструментов, чем та, которая поставляется с базовой установкой