Компиляция новой библиотеки boost на Linux с древним ядром

Компиляция новой библиотеки boost на Linux с древним ядром

Я пытаюсь скомпилировать новейшую библиотеку boost (1.62.0) в системе Linux с ядром версии 2.6.18-92.1.13.el5 (из uname -r) и компилятором Intel C++ 2016 с использованием gcc 6.1.0.

Новый компилятор Intel C++ и gcc установлены в подкаталоге моего домашнего каталога. Я использую старый glibc, вероятно, такой же древний, как и ядро ​​( ldd --versionдает ldd (GNU libc) 2.5).

Я получаю следующую ошибку для модуля потока:

In file included from libs/log/src/event.cpp(31):
/usr/include/linux/futex.h(96): error: identifier "u32" is undefined
  long do_futex(u32 *uaddr, int op, u32 val, unsigned long timeout,
                ^

Это единственная ошибка во всей подборке.

Я не могу установить новое ядро ​​на компьютер, так как у меня нет прав root.

Стоит ли устанавливать новейший заголовок Linux? Позволит ли это мне установить boost 1.62.0 без получения ошибки?

решение1

В первой же ссылке я нашел следующее:

CentOS 5.2 поставляется с Boost 1.33.1

Если вы настаиваете на этом хакерском подходе, вам нужно посетитьУвеличить архивные версии, и ищите версию 1.33.1. Но обратите внимание на дату выпуска:

Версия 1.33.1
5 декабря 2006 г. 12:00 GMT

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

В любой системе, в которой есть менеджер пакетов, менеджер пакетов долженНИКОГДА НЕ БУДЬТЕ ИНВАЛИДНЫМИ. Вам следует рассмотреть возможность обновления ОС. См.принятый ответ здесь. Вам не следует обновлять заголовочные файлы, пока вы не обновите ядро, и вы не сможете обновить ядро, пока yumоно не будет восстановлено.

Рекомендации

Спецификация RPM для Boost (libboost) RPM на CentOS 5.2

Связанный контент