bytedeco / javacpp-presets

The missing Java distribution of native C++ libraries
Other
2.63k stars 731 forks source link

ARM64 - tesseract - undefined reference to `jbg_dec_init' etc #797

Open peardox opened 4 years ago

peardox commented 4 years ago

I get this on my Nano (failure log below)

Edited cppbuild.sh and added -ljbig - e.g.

linux-arm64) PKG_CONFIG_PATH= ........ LIBS="-llept" becomes... PKG_CONFIG_PATH= ........ LIBS="-llept -ljbig"

================================================= libtool: link: aarch64-linux-gnu-g++ -g -O2 -std=c++17 -Wl,-rpath -Wl,/home/simon/.javacpp/cache/leptonica-1.78.0-1.5.2-SNAPSHOT-linux-arm64.jar/org/bytedeco/leptonica/linux-arm64/lib/ -o .libs/tesseract tesseract-tesseractmain.o -fopenmp -L/home/simon/.javacpp/cache/leptonica-1.78.0-1.5.2-SNAPSHOT-linux-arm64.jar/org/bytedeco/leptonica/linux-arm64/lib/ ./.libs/libtesseract.so -L/home/simon/.javacpp/cache/leptonica-linux-arm64.jar/org/bytedeco/leptonica/linux-arm64/lib/ -lrt /home/simon/src/jcpp/master/javacpp-presets/leptonica/cppbuild/linux-arm64/lib/liblept.so -lpthread -pthread -fopenmp -Wl,-rpath -Wl,/home/simon/src/jcpp/master/javacpp-presets/tesseract/cppbuild/linux-arm64/lib -Wl,-rpath -Wl,/home/simon/src/jcpp/master/javacpp-presets/leptonica/cppbuild/linux-arm64/lib /home/simon/src/jcpp/master/javacpp-presets/leptonica/cppbuild/linux-arm64/lib/liblept.so: undefined reference to jbg_dec_init' /home/simon/src/jcpp/master/javacpp-presets/leptonica/cppbuild/linux-arm64/lib/liblept.so: undefined reference tojbg_dec_free' /home/simon/src/jcpp/master/javacpp-presets/leptonica/cppbuild/linux-arm64/lib/liblept.so: undefined reference to jbg_dec_in' /home/simon/src/jcpp/master/javacpp-presets/leptonica/cppbuild/linux-arm64/lib/liblept.so: undefined reference tojbg_enc_free' /home/simon/src/jcpp/master/javacpp-presets/leptonica/cppbuild/linux-arm64/lib/liblept.so: undefined reference to jbg_enc_out' /home/simon/src/jcpp/master/javacpp-presets/leptonica/cppbuild/linux-arm64/lib/liblept.so: undefined reference tojbg_dec_getsize' /home/simon/src/jcpp/master/javacpp-presets/leptonica/cppbuild/linux-arm64/lib/liblept.so: undefined reference to jbg_newlen' /home/simon/src/jcpp/master/javacpp-presets/leptonica/cppbuild/linux-arm64/lib/liblept.so: undefined reference tojbg_dec_getimage' /home/simon/src/jcpp/master/javacpp-presets/leptonica/cppbuild/linux-arm64/lib/liblept.so: undefined reference to jbg_strerror' /home/simon/src/jcpp/master/javacpp-presets/leptonica/cppbuild/linux-arm64/lib/liblept.so: undefined reference tojbg_enc_init' collect2: error: ld returned 1 exit status Makefile:580: recipe for target 'tesseract' failed make[2]: [tesseract] Error 1 make[2]: Leaving directory '/home/simon/src/jcpp/master/javacpp-presets/tesseract/cppbuild/linux-arm64/tesseract-4.1.0/src/api' Makefile:487: recipe for target 'all-recursive' failed make[1]: [all-recursive] Error 1 make[1]: Leaving directory '/home/simon/src/jcpp/master/javacpp-presets/tesseract/cppbuild/linux-arm64/tesseract-4.1.0' Makefile:395: recipe for target 'all' failed make: *** [all] Error 2 [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] JavaCPP Presets for Tesseract 4.1.0-1.5.2-SNAPSHOT . FAILURE [01:07 min] [INFO] JavaCPP Presets for cpu_features 0.4.1-1.5.2-SNAPSHOT SKIPPED [INFO] JavaCPP Presets for Systems 1.5.2-SNAPSHOT ......... SKIPPED [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:11 min [INFO] Finished at: 2019-10-04T05:37:01+01:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.bytedeco:javacpp:1.5.2-SNAPSHOT:build (javacpp-cppbuild-install) on project tesseract: Execution javacpp-cppbuild-install of goal org.bytedeco:javacpp:1.5.2-SNAPSHOT:build failed: Process exited with an error: 2 -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [

saudet commented 4 years ago

Again, not happening here: https://api.travis-ci.org/v3/job/592363004/log.txt If you know how to fix this on our system though, please send a pull request!

peardox commented 4 years ago

I'm wondering if there's a connection between this and another issue - systems fails

What version of libc are you running? I'm guessing it's pre 2.26?

The following header files are removed in 2.27 (apparently implemented c 2.26)

xlocale.h -> See https://sourceware.org/glibc/wiki/Release/2.26#Removal_of_.27xlocale.h.27 bits/sigset.h -> Don't know where it's gone bits/uio.h -> Copy in sys/uio.h bits/siginfo.h -> Copy in asm/siginfo.h

I've got x86_64 servers with 2.23 and 2.27 next to me (old laptops), they're running Ubu 16.04 + 18.04 respectively. I'll set builds going on both of them.

My Nano's on Ubu 18.04 (stock NVidia repo) so these hassles my end may all be connected

saudet commented 4 years ago

It's tested on CentOS 6/7 and Ubuntu 16.04. Anything else isn't currently supported at build time, but again, pull requests are welcome.

peardox commented 4 years ago

Ahh - I suspected something like that from the unable to replicate statement

My two boxes are building ATM, I'll let you know what happens when they've finished

I don't do Java so while I can diagnose issues, hack in local fixes and test any updates that's about the extent of my usefulness. I'm doing a port to ARM64 of a commercial Java AI package for fun.

VMs are handy for testing. I've got about 20 virginal system images I use to test stuff. It'll probably be worth while firing up a nice clean Debian 10 / Fedora 30 as they'll be indicative of next Ubuntu / Centos respectively.

If you want me to, that is

On Fri, Oct 4, 2019 at 7:48 AM Samuel Audet notifications@github.com wrote:

It's tested on CentOS 6/7 and Ubuntu 16.04. Anything else isn't currently supported at build time, but again, pull requests are welcome.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/bytedeco/javacpp-presets/issues/797?email_source=notifications&email_token=AAL2HIZ2VN4ZAPPLGR4MXW3QM3RNFA5CNFSM4I5LG7DKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAKUVCY#issuecomment-538266251, or mute the thread https://github.com/notifications/unsubscribe-auth/AAL2HI7EV3VNZMYFKM63ZYTQM3RNFANCNFSM4I5LG7DA .

saudet commented 4 years ago

Are you saying you have images with something like QEMU up and running and everything? That would be handy indeed since we're going to need that for HDF5 (see issue #794).

peardox commented 4 years ago

Actually they're all VMWare Player images - which means they run on many hosts.

I tend to run on hardware so re #794 - got one in the corner (Pi4 + 4G), one's on loan (Pi 3) - Pi2 needs some TLC :)

A Jetson Nano is basically a better build Pi3 with 4G and a GPU (Same ARM A57 CPU) - oddly the Nano outperforms the Pi4's A71 in my tests...

Personally I use Windows as my main box. The images are 2G - 15G (OS dependent) and stored on an external USB HD. All apart from 3 versions of Windows are Linux distros.

The methodology is to take a fresh distro, install it on a VM and do the absolute minimum to it. Basically update to latest patch version, install SSH then shut it down and create an archive. This is the "virgin".

I can then take anything I want to test, and see how it works on a clean system. Once I've messed it up enough - no problem. Delete the VM and copy the archive back to main drive, extract and I've got a new virgin to play with.

Current list of backup virgins - the can be expanded as I like. You'll notice there are lots of older versions - especially Ubuntu (everyone uses it so it's the main target)

CentOS 7.6.rar Debian 9.8 64-bit.rar Fedora 29.rar Fedora 30.rar Linux Mint 18.rar Linux Mint 19.rar MX Linux 18.3.rar MX Linux 64-bit 18.1.rar MX Linux 64bit 18.2.rar Ubuntu 14.04.rar Ubuntu 16.04.rar Ubuntu 18.04.rar Ubuntu 18.10.rar Ubuntu 19.04.rar Windows 10 x64.rar Windows 7 x64.rar Windows 8.x x64.rar

Windows is attached to two laptops running Some OS-or-another (currently Ubu16.04) + a permanent 18.04 box, a Jetson Nano and a Rasperry Pi by for ARM and a MacBook Pro for ... err ... Mac stuff. This is all rounded off with iPhone + Pad and Android tablet + phone.

I test a lot...:)

On Fri, Oct 4, 2019 at 8:51 AM Samuel Audet notifications@github.com wrote:

Are you saying you have images with something like QEMU up and running and everything? That would be handy indeed since we're going to need that for HDF5 (see issue #794 https://github.com/bytedeco/javacpp-presets/issues/794).

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/bytedeco/javacpp-presets/issues/797?email_source=notifications&email_token=AAL2HI6KAUKY3OLSCKVYKQDQM3YYHA5CNFSM4I5LG7DKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAKZZIA#issuecomment-538287264, or mute the thread https://github.com/notifications/unsubscribe-auth/AAL2HI65QA6SOSUGLNQRNI3QM3YYHANCNFSM4I5LG7DA .

saudet commented 4 years ago

I don't think VMware can emulate ARM on x86, so we still need the hardware, right?

peardox commented 4 years ago

Line 2 of message

I've got a Pi4, Pi3 (on loan) and a Pi2 (needs SD card fixing)

On Fri, Oct 4, 2019 at 9:48 AM Samuel Audet notifications@github.com wrote:

I don't think VMware can emulate ARM on x86, so we still need the hardware, right?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/bytedeco/javacpp-presets/issues/797?email_source=notifications&email_token=AAL2HI2XJOC2SICYGBAUIRTQM37NNA5CNFSM4I5LG7DKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAK7IPY#issuecomment-538309695, or mute the thread https://github.com/notifications/unsubscribe-auth/AAL2HI4BLWDAWVKMBGTAVWTQM37NNANCNFSM4I5LG7DA .

peardox commented 4 years ago

I'm currently starting a Pi4 build.

No bells, no whistles - build default (it'll fail - it's running Debian 10)

saudet commented 4 years ago

Well, I guess they need to update the content in these repositories then: https://github.com/raspberrypi/tools https://github.com/raspberrypi/userland It might help to open an issue there explaining that for some reason the libraries installed on the device differ from what is available in those repositories.