-2

I try to compile the newest boost library (1.62.0) on a Linux system with kernel version 2.6.18-92.1.13.el5 (from uname -r), and 2016 intel c++ compiler using gcc 6.1.0.

The new intel c++ compiler and gcc are installed at a sub directory of my home directory. I am using an old glibc probably as ancient as the kernel (ldd --version gives ldd (GNU libc) 2.5).

I get the following error for the thread module:

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,
                ^

That is the only error in the whole compilation.

I cannot install new kernel on the computer because I don't have root access.

Is it a good idea to install the newest Linux header? Will that allow me to install boost 1.62.0 without getting the error?

  • Why do you need the new boost library? Use the answer as a justification to whomever belongs to the root account, otherwise you need to only use the tools provided. GCC 6.10 is only good for 4.x kernels, so what the heck are you doing?? – eyoung100 Sep 29 '16 at 19:29
  • it is a cluster of computers. no one want to update the linux kernel of the computers at this moment because we might break something that takes a long time to fix. installing at home directly is more safe. I only want to know if installing the newest linux header at my home directory would break the software that I installed at my home directory. – hamster on wheels Sep 29 '16 at 19:50
  • Or, I can just back up things in the home directory, and try. have been doing that for a while. – hamster on wheels Sep 29 '16 at 19:53
  • my god. i was even trying to backport standard library before installing the newest gcc. it is a horror to work with ancient software. but, no one want to break the software that is "working" – hamster on wheels Sep 29 '16 at 19:57
  • Why can't you use the tools provided by the system to build your software? In order to install header files, you'll need the matching kernel sources. You can't do that in a /home directory as the kernel headers should match the running kernel. Your sysadmin should be doing that for you. It's easier to match your environment, than it is to try to "fake upgrade." – eyoung100 Sep 29 '16 at 20:00
0

I found the following in the first reference:

CentOS 5.2 ships with Boost 1.33.1

If you insist on this hackish approach you need to visit the Boost Archived Versions, and look for version 1.33.1. But notice the release date:

Version 1.33.1
December 5th, 2006 12:00 GMT

After downloading the version that was supposed to be installed via yum, build it in your home directory. Do not upgrade your GCC version. Due to the age of your system, the tools you're trying to install are constrained by the age of your archaic toolchain.

In any system that has a package manager, the package manager should NEVER BE DISABLED. You should consider an OS upgrade. See the accepted answer here. You should not upgrade your header files until you upgrade your kernel, and you can't upgrade the kernel until yum is restored.

References

RPM spec for Boost (libboost) RPM on CentOS 5.2

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.