Ошибка: нераспознанный параметр командной строки ‘-Wno-invalid-source-encoding’ [-Werror] в сборке Mesos

Моя операционная система Ubuntu 18.10. Я выполняю следующие шаги на трех узлах: Чтобы установить Mesos, я выполнил эти шаги один за другим без каких-либо ошибок, за исключением того, что на каждом узле уже был установлен Open JDK 8, поэтому я не устанавливал Open JDK 8 снова.

   sudo apt-get update
   sudo apt-get install -y tar wget git
   sudo apt-get install -y openjdk8-jdk (I did not do that)
   sudo apt-get install -y autoconf libtool
   sudo apt-get -y install build-essential python-dev python-six python- 
   virtualenv libcurl4-nss-dev libsasl2-dev libsasl2-modules maven 
   libapr1-dev libsvn-dev zlib1g-dev iputils-ping
   

Проблема начинается, когда я хочу построить Mesos. Я сделал эти шаги для этого:

cd mesos-1.7.0
./bootstrap
mkdir build
cd build
../configure
make

Мои IP-адреса: 150.20.11.137,150.20.11.134,150.20.11.157. Я загрузил пакет Mesos на все из них и распаковал по одному и тому же пути. Я сделал ‹../configure› на каждом узле без каких-либо проблем, но когда я запускаю make, я получаю эту ошибку на каждом узле:

Third_party/cares/cares/ares_init.c: В функции «ares_dup»: Third_Party/cares/cares/ares_init.c:301:17: ошибка: аргумент «sizeof» в вызове «strncpy» является тем же выражением, что и источник; Вы имели в виду использовать размер пункта назначения? [-Werror=размер-указателя-memaccess]

       sizeof(src->local_dev_name));
             ^

Third_party/cares/cares/ares_init.c: На верхнем уровне:

cc1: ошибка: нераспознанный параметр командной строки ‘-Wno-invalid-source-coding’ [-Werror] cc1: все предупреждения рассматриваются как ошибки

make[4]: *** [Makefile:2635: /home/spark/mesos- 1.7.0/build/3rdparty/grpc- 1.10.0/objs/opt/ Third_Party/cares/cares/ares_init.o] Ошибка 1

make[4]: Выход из каталога '/home/spark/mesos- 1.7.0/build/3rdparty/grpc-1.10.0'

make[3]: *** [Makefile:1446: grpc-1.10.0-build-stamp] Ошибка 2

make[3]: Выход из каталога '/home/spark/mesos-1.7.0/build/3rdparty'

make 2]: *** [Makefile:1035: полностью рекурсивный] Ошибка 1

make[2]: Выход из каталога '/home/spark/mesos-1.7.0/build/3rdparty'

make[1]: *** [Makefile:765: all] Ошибка 2

make[1]: Выход из каталога '/home/spark/mesos-1.7.0/build/3rdparty'

make: *** [Makefile:768: полностью рекурсивный] Ошибка 1


person M_Gh    schedule 09.01.2019    source источник
comment
Я использовал другую версию Mesos, но получил эту ошибку src/zookeeper.c:3504:21: ошибка: директива '%d' записывает от 1 до 5 байтов в область размером от 0 до 127 [-Werror =format-overflow=] sprintf(buf,%s:%d,addrstr,ntohs(port)); Не знаю, это баг Месоса или я что-то не так делаю. Любая помощь будет оценена по достоинству.   -  person M_Gh    schedule 09.01.2019
comment
Я обновил c-ares и установил libssl-dev. После этого я получил эту ошибку: ошибка: квалификаторы типа игнорируются при типе результата приведения [-Werror=ignored-qualifiers] static_cast‹const uint32_t›(target_window());   -  person M_Gh    schedule 12.01.2019


Ответы (1)


Проблема решена. Проблема была из-за версии GCC. Версия GCC в Ubuntu 18.10 — 8.2.0. Я установил gcc-5 и g++-5 по этой инструкции:

 sudo add-apt-repository ppa:ubuntu-toolchain-r/test
 sudo apt-get update
 sudo apt-get install gcc-5 g++-5

Затем, чтобы выбрать версию GCC, которую я хочу, мне нужно установить «альтернативные обновления» для gcc. Поэтому я запускаю эти команды:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 500 --slave 
/usr/bin/g++ g++ /usr/bin/g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave 
/usr/bin/g++ g++ /usr/bin/g++-8

После этого я выбрал gcc-5 с помощью этой команды:

sudo update-alternatives --config gcc

Более того, у меня была ошибка, связанная с OpenSSL; затем я установил его с помощью этой команды:

sudo apt-get install libssl-dev

После этих изменений я начал устанавливать Mesos, и он установился без ошибок. Я надеюсь, что эта иллюстрация была полезна для других.

person M_Gh    schedule 13.01.2019
comment
Лучше не танцевать update-alternatives, а использовать ../configure CC=gcc-5 CXX=g++-5 - person o11c; 13.01.2019
comment
Уважаемый @o11c, спасибо за ваше предложение. Mesos установился без ошибок; Я сделаю ваше предложение для другой установки. Не могли бы вы сказать мне, могу ли я без проблем изменить альтернативы gcc на gcc-8? - person M_Gh; 13.01.2019