Compile a nova biblioteca boost no Linux com kernel antigo

Compile a nova biblioteca boost no Linux com kernel antigo

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 --versionldd (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 yumseja restaurado.

Referências

Especificação de RPM para Boost (libboost) RPM no CentOS 5.2

informação relacionada