0

I'm trying to install the SX (http://SX.dyne.org) tools using Ubuntu 14 LTS following the installation instructions (http://sx.dyne.org/introduction.html#installation).

  1. I use wget to download the SH script to root, then...
  2. install with sudo bash ./install-sx.sh

All goes well until this point (terminal window output edited for brevity ie the start if the installation looks fine):

checking for CURL... yes
checking for libsecp256k1... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating include/bitcoin/Makefile
config.status: creating src/Makefile
config.status: creating libbitcoin.pc
config.status: executing depfiles commands
config.status: executing libtool commands
configure: WARNING: unrecognized options: --with-libsecp256k1
Making all in include/bitcoin
make[1]: Entering directory '/usr/local/src/libbitcoin-git/include/bitcoin'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/usr/local/src/libbitcoin-git/include/bitcoin'
Making all in src
make[1]: Entering directory '/usr/local/src/libbitcoin-git/src'
  CXX      utility/ec_keys.lo
utility/ec_keys.cpp: In function 'libbitcoin::ec_point libbitcoin::secret_to_public_key(const ec_secret&, bool)':
utility/ec_keys.cpp:66:23: error: 'secp256k1_ecdsa_pubkey_create' was not declared in this scope
             compressed))
                       ^

utility/ec_keys.cpp: In function 'bool libbitcoin::verify_public_key(const ec_point&)':
utility/ec_keys.cpp:75:78: error: 'secp256k1_ecdsa_pubkey_verify' was not declared in this scope
     return secp256k1_ecdsa_pubkey_verify(public_key.data(), public_key.size());
                                                                              ^

utility/ec_keys.cpp: In function 'bool libbitcoin::verify_private_key(const ec_secret&)':
utility/ec_keys.cpp:81:60: error: 'secp256k1_ecdsa_seckey_verify' was not declared in this scope
     return secp256k1_ecdsa_seckey_verify(private_key.data());
                                                            ^

utility/ec_keys.cpp: In function 'bool libbitcoin::ec_tweak_add(libbitcoin::ec_point&, const ec_secret&)':
utility/ec_keys.cpp:115:73: error: 'secp256k1_ecdsa_pubkey_tweak_add' was not declared in this scope
     return secp256k1_ecdsa_pubkey_tweak_add(a.data(), a.size(), b.data());
                                                                         ^

utility/ec_keys.cpp: In function 'bool libbitcoin::ec_multiply(libbitcoin::ec_point&, const ec_secret&)':
utility/ec_keys.cpp:121:73: error: 'secp256k1_ecdsa_pubkey_tweak_mul' was not declared in this scope
     return secp256k1_ecdsa_pubkey_tweak_mul(a.data(), a.size(), b.data());
                                                                         ^

utility/ec_keys.cpp: In function 'bool libbitcoin::ec_add(libbitcoin::ec_secret&, const ec_secret&)':
utility/ec_keys.cpp:127:64: error: 'secp256k1_ecdsa_privkey_tweak_add' was not declared in this scope
     return secp256k1_ecdsa_privkey_tweak_add(a.data(), b.data());
                                                                ^

utility/ec_keys.cpp: In function 'bool libbitcoin::ec_multiply(libbitcoin::ec_secret&, const ec_secret&)':
utility/ec_keys.cpp:133:64: error: 'secp256k1_ecdsa_privkey_tweak_mul' was not declared in this scope
     return secp256k1_ecdsa_privkey_tweak_mul(a.data(), b.data());
                                                                ^

utility/ec_keys.cpp: In function 'bool libbitcoin::verify_public_key(const ec_point&)':
utility/ec_keys.cpp:76:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^

utility/ec_keys.cpp: In function 'bool libbitcoin::verify_private_key(const ec_secret&)':
utility/ec_keys.cpp:82:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^

utility/ec_keys.cpp: In function 'bool libbitcoin::ec_tweak_add(libbitcoin::ec_point&, const ec_secret&)':
utility/ec_keys.cpp:116:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
utility/ec_keys.cpp: In function 'bool libbitcoin::ec_multiply(libbitcoin::ec_point&, const ec_secret&)':
utility/ec_keys.cpp:122:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^

utility/ec_keys.cpp: In function 'bool libbitcoin::ec_add(libbitcoin::ec_secret&, const ec_secret&)':
utility/ec_keys.cpp:128:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^

utility/ec_keys.cpp: In function 'bool libbitcoin::ec_multiply(libbitcoin::ec_secret&, const ec_secret&)':
utility/ec_keys.cpp:134:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^

make[1]: * [utility/ec_keys.lo] Error 1
make[1]: Leaving directory '/usr/local/src/libbitcoin-git/src'
make: * [all-recursive] Error 1
Xxxxx@ubuntu:/$ sx
The program 'sx' is currently not installed. You can install it by typing:
sudo apt-get install lrzsz

Has anyone got any idea why this is occurring and if there's a workaround? I initially had more issues with Ubuntu 12.04 LTS so have upgraded to 14 LTS as I mentioned.

1 Answer 1

1
+50

There was a breaking API change in libsecp256k1 that hasn't been addressed in libbitcoin's master branch. It has been addressed on their develop branch if you want to go down that road.

I have had the most luck with mastercoin's install-sx.sh script that pulls from older un-tagged commits that seem to work in harmony.

1
  • It works! Thank you for sharing the knowledge. I'd recommend all Windows users run a Virtual Machine/installation of Ubuntu 14 LTS to use SX, Pybitcointools and all other Python BTC utilities to their full extent (Windows is close to impossible) Commented Nov 11, 2014 at 1:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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