Feathercoin daemon and wallet production version 0.17.0.1

feathercoind: undefined reference to `neoscrypt'


  • | Tip Reimelt

    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
    Nils

    Detailed output during build process:

    [email protected]:~/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 function CBlockHeader::GetPoWHash(unsigned int) const': /home/user/Source/Feathercoin/src/primitives/block.cpp:23: undefined reference toneoscrypt’
    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


  • | Tip Reimelt

    @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 available

    add neoscrypt to Makefile: CRYPTO_LIBS = -lcrypto -lneoscrypt


  • Moderators | Tip Wellenreiter

    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 😃

    normally 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?


  • | Tip Reimelt

    @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.


  • | Tip Bushstar

    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.


  • | Tip Reimelt

    @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.

    0_1539670850465_Screenshot_20181016-081429.png


  • Moderators | Tip Wellenreiter

    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?


  • | Tip Reimelt

    @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.


  • Moderators | Tip Wellenreiter

    Yes the edge wallet is a light weight wallet and very useful for handheld devices


  • Moderators | Tip AcidD

    Holy hell! Feathercoind running on android! Amazing

    Well done @Reimelt