feathercoind: undefined reference to `neoscrypt'
-
Hi developer community,
during the build of feathercoind I get an undefined reference error related to neoscrypt.
I’m running a Linux machine with an Intel i5.
I did build bitcoind from source without problems, the machine runs as bitcoin node now.To compile the feathercoind I did exclude the neoscrypt_asm.S file from the make process.
This code seems to be optimized for AMD. So I renamed the file and deleted all related lines in the Makefile.
All relevant functions are in neoscrypt.c which compiles successfully into the .o and .lo files.
How can I convince the linker to include neoscrypt?
Thank you for help.
Best
NilsDetailed output during build process:
user@tux:~/Source/Feathercoin/src$ make
make[1]: Verzeichnis „/home/user/Source/Feathercoin/src“ wird betreten
CXXLD feathercoind
libbitcoin_consensus.a(libbitcoin_consensus_a-block.o): In functionCBlockHeader::GetPoWHash(unsigned int) const': /home/user/Source/Feathercoin/src/primitives/block.cpp:23: undefined reference to
neoscrypt’
collect2: error: ld returned 1 exit status
Makefile:3726: die Regel für Ziel „feathercoind“ scheiterte
make[1]: *** [feathercoind] Fehler 1
make[1]: Verzeichnis „/home/user/Source/Feathercoin/src“ wird verlassen
Makefile:9616: die Regel für Ziel „all-recursive“ scheiterte
make: *** [all-recursive] Fehler 1 -
@reimelt I could finally fix it myself.
Solution: create a libneoscrypt.so with the following commands:
export C_INCLUDE_PATH=/home/user/Source/Feathercoin/src/crypto/:.
gcc -c -fPIC crypto/neoscrypt.c -o crypto/neoscrypt.o
cd crypto/
ar rcs neoscrypt.a neoscrypt.o -> create static library
gcc -shared neoscrypt.o -o neoscrypt.so -> convert into shared library
sudo cp neoscrypt.so /usr/lib/x86_64-linux-gnu/libneoscrypt.so -> make lib availableadd neoscrypt to Makefile: CRYPTO_LIBS = -lcrypto -lneoscrypt
-
The symbol neoscrypt is defined in src/crypto/neoscrypt.h.
I assume a problem with your include path.
[edit]
Well you fixed it yourself, and I was right with my assupmtion :Dnormally it is a job of the ‘autogen.sh’ and ‘configure’ commands to set the include and lib path correctly
Did you do an Autogen.sh and configure after downloading the code from Github?
-
@wellenreiter Thank you Wellenreiter for your comment.
Yes of course I did both, like with building bitcoind before.
Perhaps neoscrypt compiling into a library like libneoscrypt.so could be included in the Feathercoin “package”. Would make things easier.
Because this is already the second machine where I can`t just build feathercoind out-of-the-box without errors while bitcoind works fine.
-
Please reset and clean your repo…
git reset --hard HEAD
git clean -fdx…then when you next run configure.ac add the following flag…
./configure --disable-asm
…that will skip ASM compilation and NeoScrypt should compile with everything else as expected.
-
@bushstar Good morning Bushstar,
you know, what really happened is that I tried to build Feathercoin on Android.
And now it works! Thank you for the commands. I did exactly what you wrote and after around 5 hours of compiling feathercoind is running on my Moto Z Play. -
Really interesting, that you have a feathercoind running on Android.
Doesn’t it take too much resources ?There are a some Android Feathercoin Wallets available in the Play Store, like Feathercoin-Wallet-2 or the Coinotron wallet, But I assume you prefer to compile the code yourself, right?
-
@wellenreiter Hi Wellenreiter, Lucas recommend the Edge wallet and I’m a happy user of that.
But to understand more of the code I wanted to carry the source code and executables always with me.
It’s a good feeling to just pull out your phone and it’s all there and it really works.
First I played around with picocoin. Then bitcoind with 12hrs compile time and now Feathercoin, which is much lighter than bitcoin as it compiles around 3 times faster. -
Yes the edge wallet is a light weight wallet and very useful for handheld devices
-
Holy hell! Feathercoind running on android! Amazing
Well done @Reimelt