Я пытаюсь скомпилировать новейшую библиотеку 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 без возникновения ошибки?
В первой ссылке я обнаружил следующее:
CentOS 5.2 поставляется с Boost 1.33.1
Если вы настаиваете на таком хакерском подходе, вам нужно посетить Boost Archived Versions и найти версию 1.33.1. Но обратите внимание на дату выпуска:
Версия 1.33.1
5 декабря 2006 г. 12:00 GMT
После загрузки версии, которая должна была быть установлена через yum, соберите ее у себя дома. каталог. Не обновляйте версию GCC . Из-за возраста вашей системы инструменты, которые вы пытаетесь установить, ограничены возрастом вашей архаичной инструментальной цепочки.
В любой системе, имеющей диспетчер пакетов, диспетчер пакетов НЕ должен НИКОГДА БЫТЬ ОТКЛЮЧЕН . Вам следует подумать об обновлении ОС. См. принятый ответ здесь . Вы не должны обновлять файлы заголовков, пока не обновите ядро, и вы не можете обновить ядро до восстановления yum
.