
Tento compilar a mais nova biblioteca boost (1.62.0) em um sistema Linux com kernel versão 2.6.18-92.1.13.el5 (de uname -r
) e compilador Intel C++ 2016 usando gcc 6.1.0.
O novo compilador Intel C++ e o gcc são instalados em um subdiretório do meu diretório inicial. Estou usando um glibc antigo, provavelmente tão antigo quanto o kernel ( ldd --version
dá ldd (GNU libc) 2.5
).
Recebo o seguinte erro para o módulo de thread:
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,
^
Esse é o único erro em toda a compilação.
Não consigo instalar o novo kernel no computador porque não tenho acesso root.
É uma boa ideia instalar o cabeçalho Linux mais recente? Isso me permitirá instalar o boost 1.62.0 sem receber o erro?
Responder1
Encontrei o seguinte na primeira referência:
CentOS 5.2 vem com Boost 1.33.1
Se você insiste nessa abordagem hackeada, você precisa visitar oImpulsione as versões arquivadase procure a versão 1.33.1. Mas observe a data de lançamento:
Versão 1.33.1
5 de dezembro de 2006 12:00 GMT
Depois de baixar a versão que deveria ser instalada via yum, construa-a em seu diretório inicial. Não atualize sua versão do GCC. Devido à idade do seu sistema, as ferramentas que você está tentando instalar são limitadas pela idade do seu conjunto de ferramentas arcaico.
Em qualquer sistema que possua um gerenciador de pacotes, o gerenciador de pacotes deveNUNCA SEJA DESATIVADO. Você deve considerar uma atualização do sistema operacional. Veja oresposta aceita aqui. Você não deve atualizar seus arquivos de cabeçalho até atualizar seu kernel e não pode atualizar o kernel até que yum
seja restaurado.
Referências
Especificação de RPM para Boost (libboost) RPM no CentOS 5.2