
Я пытаюсь скомпилировать новейшую библиотеку 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
оно не будет восстановлено.