libbitcoin / libbitcoin-explorer

Bitcoin Command Line Tool
Other
601 stars 177 forks source link

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

Closed kenorb closed 2 years ago

kenorb commented 3 years ago

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
evoskuil commented 3 years ago

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.

evoskuil commented 3 years ago

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