bazel: failed to install bazel on Red Hat 6.7
I would like to install bazel from source, and use bazel to compile tensorflow on a cluster running redhat 6.7. When I try to install bazel, the glibc version (2.12) is too old. I do not have root access to the cluster. Is it possible to install tensorflow in this case?
My system information:
-bash-4.1$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.7 (Santiago)
-bash-4.1$ which gcc
/usr/bin/gcc
-bash-4.1$ gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
-bash-4.1$ ldd --version
ldd (GNU libc) 2.12
The system has newer gcc installed as well. I tried using it, bazel still wonβt compile.
-bash-4.1$ /usr/local/gcc/4.8.4/bin/gcc -v
Using built-in specs.
COLLECT_GCC=/usr/local/gcc/4.8.4/bin/gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc/4.8.4/libexec/gcc/x86_64-unknown-linux-gnu/4.8.4/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --prefix=/usr/local/gcc/4.8.4
Thread model: posix
gcc version 4.8.4 (GCC)
When I was compiling bazel using gcc 4.8.4, I got the following error:
bazel-0.1.1/_bin/build-runfiles: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found
How can I install the missing dependency locally, and have bazel pick up the right version of glib? What part of tools/cpp/CROSSTOOL should I modify? What environment variables should I set before ./compile.sh
I am trying to install bazel-0.1.1 instead of bazel-0.1.2 because the latter does not compile tensorflow. https://github.com/tensorflow/tensorflow/issues/469
About this issue
- Original URL
- State: closed
- Created 8 years ago
- Comments: 110 (54 by maintainers)
Links to this issue
Commits related to this issue
- cc_configure: fix issues with CentOS 6.7 and custom gcc This setup was provided on issue #760. -- MOS_MIGRATED_REVID=116656431 — committed to bazelbuild/bazel by damienmg 8 years ago
- cc_configure: always add -B/usr/bin to the list of gcc option Fixes #760. -- MOS_MIGRATED_REVID=120217217 — committed to bazelbuild/bazel by damienmg 8 years ago
- cc_configure: always add -B/usr/bin to the list of gcc option Fixes #760. -- MOS_MIGRATED_REVID=120217217 — committed to bazelbuild/bazel by damienmg 8 years ago
Why canβt bazel simply respect my PATH?
Such was what I kept screaming to google until it led me to this issue. When I set up my compiler tool chain, I expect the first cc and ld found in my PATH to be the working combination. Yet bazel secretly used my cc and instructed my cc to pick a funny ld.
ππππ
-Wl,-R
works great! Linker rocks! I really appreciate @damienmg 's help on this issue.In summary, to build bazel with a customized gcc and gcxxlib other than the standard paths, I customized
tools/cpp/CROSSTOOL
Then comment out the
atexit
line inscripts/bootstrap/buildenv.sh
:Finally build bazel: