Ran into one I cant find an answer for compiling diamond 2.0.5.7 on Ubuntu 16.04 64 bit armv8
ok another new problem: during linking:
build/scrypt_mine.o: In function 'scrypt(void const*, unsigned long, unsigned int*, void*)':
scrypt_mine.cpp: (.text+05c): undefined reference to 'scrypt_core'
collect2: error: ld returned 1 exit status
Makefile:302: recipe for target 'diamond-qt' failed
I give up for tonight, will wait for new wallet source. diamond.pro or Makefile or src/makefile.unix needs update for armv8 I don't know why I cant figure this out ... tried qmake USE_PNP=1 xARCHCPU=armv7l ...
maybe try this hint from feldenthorn:
You'd need to replace any instances of armv7l with whatever your output from the terminal command "uname -p" is.
(source:
https://bit.diamonds/community/index.php/topic,85.msg510.html#msg510 )
Ahh ... uname -p returns aarch64
did a
make clean,
qmake xARCHCPU=aarch64 USE_UPNP=1 and
make USE_UPNP=1 xARCHCPU=aarch64it's compiling again should take a while ... we shall see ...
src/scrypt_mine.cpp: In function 'void scrypt (const void*, size_t, uint32_t*, void*)':
src/scrypt_mine.cpp:105:21: error: 'scrypt_core' was not declared in the scope
Makefile:2203: recipe for target 'build/scrypt_mine.o' failed
around line 80 of src/scrypt_mine.cpp scrypt_core is defined as:
extern "C" void scrypt_core(uint32_t *X, uint32_t *V);
where is the code for this function i can't find it defined anywhere
Built wallet for x86-64 before and never had this problem ...
in src there is a file scrypt-arm.S, scrypt-X86.S , scrypt-X86_64.S
scrypt_core() appears to be defined in these files ...
perhaps with aarch64 no scrypt-*.S file is being selected? how do I fix this
Thanks for bringing this up to me via PM, utahjohn.
I originally said that whatever returned after using uname -a was fine because we were talking about Raspberry Pis (1 and 2) and the makefile supports both armv6l and armv7l (which are actually identical). It's just not working with any of the previous architecture commands because of the 64-bit OS (see below).
Ran into one I cant find an answer for compiling diamond 2.0.5.7 on Ubuntu 16.04 64 bit armv8
ok another new problem: during linking:
build/scrypt_mine.o: In function 'scrypt(void const*, unsigned long, unsigned int*, void*)':
scrypt_mine.cpp: (.text+05c): undefined reference to 'scrypt_core'
collect2: error: ld returned 1 exit status
Makefile:302: recipe for target 'diamond-qt' failed
I give up for tonight, will wait for new wallet source. diamond.pro or Makefile or src/makefile.unix needs update for armv8 I don't know why I cant figure this out ... tried qmake USE_PNP=1 xARCHCPU=armv7l ...
It looks like you guys in the thread have already figured it out: someone will need to write a scrypt-aarch64.S file for everything to work smoothly.
Alternatively, I could probably have the wallet fall back to a C++ implementation on unsupported architectures. It would just need to be transparent to the users that their architecture does not perform as well as it might with its own assembly implementation. (That is to say that the performance would be
really bad compared to a native solution.)
Speaking of performance hits, though, I'm pretty sure one could the ARM version of QEMU to run a 32-bit binary if you just want to run the wallet on an arm64 board. At least until a more robust solution is found. A
guide for setting QEMU up on a Raspberry Pi can be found here, but I'm not sure how well that translates to ODROID's boards. You might have to set up ODROID's boards for virtualization (if they support it) and compile QEMU yourself to get things working.