libbitcoin/libbitcoin-explorer

/usr/bin/ld: final link failed: bad value: relocation R_X86_64_PC32 against symbol can not be used

kenorb opened this issue · 2 comments

I've got now this kind of error:

$ sudo ./install.sh --with-icu --build-icu --build-boost
...
   g++	 ...  vtzone.cpp
   g++	 ...  vzone.cpp
   g++	 ...  windtfmt.cpp
   g++	 ...  winnmfmt.cpp
   g++	 ...  wintzimpl.cpp
   g++	 ...  zonemeta.cpp
   g++	 ...  zrule.cpp
   g++	 ...  ztrans.cpp
ar: creating ../lib/libicui18n.a
/usr/bin/ld: /usr/local/lib/libicuuc.a(putil.ao): warning: relocation against `__timezone@@GLIBC_2.2.5' in read-only section `.text.uprv_tzname_68'
/usr/bin/ld: /usr/local/lib/libicuuc.a(putil.ao): relocation R_X86_64_PC32 against symbol `__timezone@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:161: ../lib/libicui18n.so.68.2] Error 1
make: *** [Makefile:153: all-recursive] Error 2

Also:

$ sudo chown -R $USER:sudo . # Fixed permissions just in case.
$ sudo ./install.sh --build-boost 
...
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libbitcoin-protocol.pc
config.status: executing depfiles commands
config.status: executing libtool commands
configure: WARNING: unrecognized options: --without-examples
  CXX      src/libbitcoin_protocol_la-settings.lo
  CXX      src/web/libbitcoin_protocol_la-connection.lo
  CXX      src/web/libbitcoin_protocol_la-http_reply.lo
  CXX      src/web/libbitcoin_protocol_la-http_request.lo
  CXX      src/web/libbitcoin_protocol_la-json_string.lo
  CXX      src/web/libbitcoin_protocol_la-manager.lo
  CXX      src/web/libbitcoin_protocol_la-socket.lo
  CXX      src/web/libbitcoin_protocol_la-utilities.lo
  CXX      src/web/libbitcoin_protocol_la-websocket_frame.lo
  CXX      src/zmq/libbitcoin_protocol_la-authenticator.lo
  CXX      src/zmq/libbitcoin_protocol_la-certificate.lo
  CXX      src/zmq/libbitcoin_protocol_la-context.lo
  CXX      src/zmq/libbitcoin_protocol_la-frame.lo
  CXX      src/zmq/libbitcoin_protocol_la-identifiers.lo
  CXX      src/zmq/libbitcoin_protocol_la-message.lo
  CXX      src/zmq/libbitcoin_protocol_la-poller.lo
  CXX      src/zmq/libbitcoin_protocol_la-socket.lo
  CXX      src/zmq/libbitcoin_protocol_la-worker.lo
  CXX      src/zmq/libbitcoin_protocol_la-zeromq.lo
  CXXLD    src/libbitcoin-protocol.la
/usr/bin/ld: /usr/local/lib/libzmq.a(libzmq_la-stream_engine_base.o): warning: relocation against `_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4' in read-only section `.text.unlikely'
/usr/bin/ld: /usr/local/lib/libzmq.a(libzmq_la-zmq.o): relocation R_X86_64_PC32 against symbol `_ZSt7nothrow@@GLIBCXX_3.4' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make: *** [Makefile:946: src/libbitcoin-protocol.la] Error 1
  • OS: Ubuntu

The former is an error in the ICU build, the latter in ZeroMQ. but both the same error, referring to different libc versions. Could be resulting newer compiler than we CI against, requiring a configuration change in the installer builds. More info on fPIC here.

FYI the build system is currently being moved from Travis to GitHub, and compiler versions are being bumped. Discussion on the slack channel. @kulpreet