Can not load ICU library in Zyxel NAS520

I am trying to start a Xojo consoleprogram on a Zyxel NAS520. This nas has an Arm v7 processor and ‘should’ be capable to run a Xojo program.
However, i get this error:

root@NAS520:/i-data/56772bbf/xojotest/xojoarm# ./xojoarm
Runtime Error
Please report what caused this error along with the information below.
RuntimeCore/ICUStable.cpp: 79
Failure Condition: sLibraryPtr
Could not load ICU library
Aborted

The icu libraries are installed as shown below in the output of the opkg command:

[i]root@NAS520:/i-data/56772bbf/xojotest/xojoarm# opkg list-installed icu
icu - 55.1-1

root@NAS520:/i-data/56772bbf/xojotest/xojoarm# opkg files icu
Package icu (55.1-1) is installed on root and has the following files:
/opt/lib/libicui18n.so.55
/opt/lib/libiculx.so.55
/opt/lib/libicuuc.so.55
/opt/lib/libicudata.so.55.1
/opt/lib/libicui18n.so.55.1
/opt/lib/libicudata.so.55
/opt/lib/libicule.so.55
/opt/lib/libicuio.so.55.1
/opt/lib/libiculx.so.55.1
/opt/lib/libicuio.so.55
/opt/lib/libicule.so.55.1
/opt/lib/libicuuc.so.55.1

[/i]

Is here someone who has an idea what can be done to get rid of this error?

Please post the output of

strings /opt/lib/libicui18n.so.55 | grep "u_strFromUTF8"

If the output is “u_strFromUTF8” (instead of “u_strFromUTF8_55”), look here .

Hi Michael,

root@NAS520:~# strings /opt/lib/libicui18n.so.55 | grep “u_strFromUTF8”
u_strFromUTF8_55

Does that look oke?
This version of the ICU libs is from the Entware-ng/pkgcgi.cgi that has about 1800 packages in the ipk -format used by Openwrt.
This is the first time i am experimenting with icu libs on a armv7 system, therefor i couldn’t say what’s right or wrong in this environment. What i know is that a little xojo consoleprogram, which is just asking some input (string) and to print that string, shouldn’t give to much trouble.

Thanks for your reaction. I hope you have some tips! :smiley:

“u_strFromUTF8_55” looks OK.

It seems that your console program can’t find the ICU libraries. What happens if you start your program with the command below?

LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/opt/lib" ./xojoarm

Hi Michael,
I tried, but as shown below the error is still there:
root@NAS520:/i-data/56772bbf/xojotest/xojoarm# LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/opt/lib" ./xojoarm
Runtime Error
Please report what caused this error along with the information below.
RuntimeCore/ICUStable.cpp: 79
Failure Condition: sLibraryPtr
Could not load ICU library
Aborted

Any other suggestions?

I wonder why the output of “opkg files icu” in your first message doesn’t show “.so” files. Let’s make sure that they are installed on your system. Do you see “.so” files if you enter the commands below?

cd /opt/lib ls -la libicu*

It should look like

lrwxrwxrwx 1 root root 18 26. Mai 01:51 libicudata.so -> libicudata.so.57.1 lrwxrwxrwx 1 root root 18 26. Mai 01:51 libicudata.so.57 -> libicudata.so.57.1 -rwxr-xr-x 1 root root 25674832 26. Mai 01:51 libicudata.so.57.1 lrwxrwxrwx 1 root root 18 26. Mai 01:51 libicui18n.so -> libicui18n.so.57.1 lrwxrwxrwx 1 root root 18 26. Mai 01:51 libicui18n.so.57 -> libicui18n.so.57.1 -rwxr-xr-x 1 root root 3258336 26. Mai 01:51 libicui18n.so.57.1 lrwxrwxrwx 1 root root 16 26. Mai 01:51 libicuio.so -> libicuio.so.57.1 lrwxrwxrwx 1 root root 16 26. Mai 01:51 libicuio.so.57 -> libicuio.so.57.1 -rwxr-xr-x 1 root root 66664 26. Mai 01:51 libicuio.so.57.1 lrwxrwxrwx 1 root root 16 26. Mai 01:51 libicule.so -> libicule.so.57.1 lrwxrwxrwx 1 root root 16 26. Mai 01:51 libicule.so.57 -> libicule.so.57.1 -rwxr-xr-x 1 root root 440368 26. Mai 01:51 libicule.so.57.1 lrwxrwxrwx 1 root root 16 26. Mai 01:51 libiculx.so -> libiculx.so.57.1 lrwxrwxrwx 1 root root 16 26. Mai 01:51 libiculx.so.57 -> libiculx.so.57.1 -rwxr-xr-x 1 root root 61760 26. Mai 01:51 libiculx.so.57.1 lrwxrwxrwx 1 root root 18 26. Mai 01:51 libicutest.so -> libicutest.so.57.1 lrwxrwxrwx 1 root root 18 26. Mai 01:51 libicutest.so.57 -> libicutest.so.57.1 -rwxr-xr-x 1 root root 81968 26. Mai 01:51 libicutest.so.57.1 lrwxrwxrwx 1 root root 16 26. Mai 01:51 libicutu.so -> libicutu.so.57.1 lrwxrwxrwx 1 root root 16 26. Mai 01:51 libicutu.so.57 -> libicutu.so.57.1 -rwxr-xr-x 1 root root 240240 26. Mai 01:51 libicutu.so.57.1 lrwxrwxrwx 1 root root 16 26. Mai 01:51 libicuuc.so -> libicuuc.so.57.1 lrwxrwxrwx 1 root root 16 26. Mai 01:51 libicuuc.so.57 -> libicuuc.so.57.1 -rwxr-xr-x 1 root root 2017080 26. Mai 01:51 libicuuc.so.57.1

This is what i get:

root@NAS520:/# cd /
root@NAS520:/# cd /opt/lib
root@NAS520:/i-data/56772bbf/.PKG/Entware-ng/opt/lib# ls -la libicu*
lrwxrwxrwx 1 root root 18 Jun 27 14:22 libicudata.so.55 -> libicudata.so.55.1
-rwxr-xr-x 1 root root 25909512 May 11 11:46 libicudata.so.55.1
lrwxrwxrwx 1 root root 18 Jun 27 14:22 libicui18n.so.55 -> libicui18n.so.55.1
-rwxr-xr-x 1 root root 1956380 May 11 11:46 libicui18n.so.55.1
lrwxrwxrwx 1 root root 16 Jun 27 14:22 libicuio.so.55 -> libicuio.so.55.1
-rwxr-xr-x 1 root root 36616 May 11 11:46 libicuio.so.55.1
lrwxrwxrwx 1 root root 16 Jun 27 14:22 libicule.so.55 -> libicule.so.55.1
-rwxr-xr-x 1 root root 290752 May 11 11:46 libicule.so.55.1
lrwxrwxrwx 1 root root 16 Jun 27 14:22 libiculx.so.55 -> libiculx.so.55.1
-rwxr-xr-x 1 root root 33604 May 11 11:46 libiculx.so.55.1
lrwxrwxrwx 1 root root 16 Jun 27 14:22 libicuuc.so.55 -> libicuuc.so.55.1
-rwxr-xr-x 1 root root 1299512 May 11 11:46 libicuuc.so.55.1
root@NAS520:/i-data/56772bbf/.PKG/Entware-ng/opt/lib#

I should mention that the directory /opt in fact is a link to ‘/i-data/56772bbf/.PKG/Entware-ng/opt/’
Could that cause a problem?

If i search the system after those .so - links then it seems those are missing:
root@NAS520:/# find -name icu
./i-data/56772bbf/xojotest/ICU/icu_55.1-1_armv7soft.ipk
./i-data/56772bbf/xojotest/ICU/icu-57.1-1-armv7h.pkg.tar.xz
./i-data/56772bbf/.PKG/Entware-ng/opt/lib/libicuuc.so.55.1
./i-data/56772bbf/.PKG/Entware-ng/opt/lib/libicule.so.55.1
./i-data/56772bbf/.PKG/Entware-ng/opt/lib/libicudata.so.55
./i-data/56772bbf/.PKG/Entware-ng/opt/lib/libicui18n.so.55
./i-data/56772bbf/.PKG/Entware-ng/opt/lib/libicui18n.so.55.1
./i-data/56772bbf/.PKG/Entware-ng/opt/lib/libiculx.so.55
./i-data/56772bbf/.PKG/Entware-ng/opt/lib/libicuuc.so.55
./i-data/56772bbf/.PKG/Entware-ng/opt/lib/libicudata.so.55.1
./i-data/56772bbf/.PKG/Entware-ng/opt/lib/opkg/info/icu.control
./i-data/56772bbf/.PKG/Entware-ng/opt/lib/opkg/info/icu.list
./i-data/56772bbf/.PKG/Entware-ng/opt/lib/libiculx.so.55.1
./i-data/56772bbf/.PKG/Entware-ng/opt/lib/libicuio.so.55.1
./i-data/56772bbf/.PKG/Entware-ng/opt/lib/libicuio.so.55
./i-data/56772bbf/.PKG/Entware-ng/opt/lib/libicule.so.55

Sorry, that realy looked ugly, this should be better readable:

root@NAS520:/i-data/56772bbf/.PKG/Entware-ng/opt/lib# ls -la libicu* lrwxrwxrwx 1 root root 18 Jun 27 14:22 libicudata.so.55 -> libicudata.so.55.1 -rwxr-xr-x 1 root root 25909512 May 11 11:46 libicudata.so.55.1 lrwxrwxrwx 1 root root 18 Jun 27 14:22 libicui18n.so.55 -> libicui18n.so.55.1 -rwxr-xr-x 1 root root 1956380 May 11 11:46 libicui18n.so.55.1 lrwxrwxrwx 1 root root 16 Jun 27 14:22 libicuio.so.55 -> libicuio.so.55.1 -rwxr-xr-x 1 root root 36616 May 11 11:46 libicuio.so.55.1 lrwxrwxrwx 1 root root 16 Jun 27 14:22 libicule.so.55 -> libicule.so.55.1 -rwxr-xr-x 1 root root 290752 May 11 11:46 libicule.so.55.1 lrwxrwxrwx 1 root root 16 Jun 27 14:22 libiculx.so.55 -> libiculx.so.55.1 -rwxr-xr-x 1 root root 33604 May 11 11:46 libiculx.so.55.1 lrwxrwxrwx 1 root root 16 Jun 27 14:22 libicuuc.so.55 -> libicuuc.so.55.1 -rwxr-xr-x 1 root root 1299512 May 11 11:46 libicuuc.so.55.1 root@NAS520:/i-data/56772bbf/.PKG/Entware-ng/opt/lib#

Hi Michael,

After creating the links this is the output of:

root@NAS520:/# cd /opt/lib
root@NAS520:/i-data/56772bbf/.PKG/Entware-ng/opt/lib# ls -la libicu*[/code]

[code]lrwxrwxrwx    1 root     root            18 Jun 30 15:48 libicudata.so -> libicudata.so.55.1
lrwxrwxrwx    1 root     root            18 Jun 27 14:22 libicudata.so.55 -> libicudata.so.55.1
-rwxr-xr-x    1 root     root      25909512 May 11 11:46 libicudata.so.55.1
lrwxrwxrwx    1 root     root            18 Jun 30 15:50 libicui18n.so -> libicui18n.so.55.1
lrwxrwxrwx    1 root     root            18 Jun 27 14:22 libicui18n.so.55 -> libicui18n.so.55.1
-rwxr-xr-x    1 root     root       1956380 May 11 11:46 libicui18n.so.55.1
lrwxrwxrwx    1 root     root            16 Jun 30 15:52 libicuio.so -> libicuio.so.55.1
lrwxrwxrwx    1 root     root            16 Jun 27 14:22 libicuio.so.55 -> libicuio.so.55.1
-rwxr-xr-x    1 root     root         36616 May 11 11:46 libicuio.so.55.1
lrwxrwxrwx    1 root     root            16 Jun 30 15:53 libicule.so -> libicule.so.55.1
lrwxrwxrwx    1 root     root            16 Jun 27 14:22 libicule.so.55 -> libicule.so.55.1
-rwxr-xr-x    1 root     root        290752 May 11 11:46 libicule.so.55.1
lrwxrwxrwx    1 root     root            16 Jun 30 15:53 libiculx.so -> libiculx.so.55.1
lrwxrwxrwx    1 root     root            16 Jun 27 14:22 libiculx.so.55 -> libiculx.so.55.1
-rwxr-xr-x    1 root     root         33604 May 11 11:46 libiculx.so.55.1
lrwxrwxrwx    1 root     root            16 Jun 30 15:53 libicuuc.so -> libicuuc.so.55.1
lrwxrwxrwx    1 root     root            16 Jun 27 14:22 libicuuc.so.55 -> libicuuc.so.55.1
-rwxr-xr-x    1 root     root       1299512 May 11 11:46 libicuuc.so.55.1

but still got this error:

Runtime Error Please report what caused this error along with the information below. RuntimeCore/ICUStable.cpp: 79 Failure Condition: sLibraryPtr Could not load ICU library Aborted

Any other idea’s maybe?

You could use “strace” to analyze what your program is doing:

export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/opt/lib" # run only once strace -f -o /tmp/strace-output ./xojoarm grep -i libicu /tmp/strace-output

root@NAS520:/# strace -f -o /tmp/strace-output xojoarm
Runtime Error
Please report what caused this error along with the information below.
RuntimeCore/ICUStable.cpp: 79
Failure Condition: sLibraryPtr
Could not load ICU library
Aborted
root@NAS520:/# grep -i libicu /tmp/strace-output
root@NAS520:/#

Obviously there is no output generated, my guess is that the program doesn’t even get started. That could mean that the processor doesn’t comply with the prerequisits of Xojo or the library isn’t correct build.

Thanks anyway for your help, it’s realy appreciated!

Now that’s strange.

In order to simulate the problem, i uninstalled libicu on my server. I started my program with the strace command, and my program shows exactly the same error message as in your posting. Below is the output of “grep -i libicu /tmp/strace-output*”:

open("/lib64/libicui18n.so.57", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000013> lstat("/lib64/libicui18n.so.57", 0x7fff1402da50) = -1 ENOENT (No such file or directory) <0.000006> lstat("/lib64/libicui18n.so.57.so", 0x7fff1402da50) = -1 ENOENT (No such file or directory) <0.000032>

I reinstalled libicu and repeated the test. Below is the output of “grep -i libicu /tmp/strace-output*”:

open("/lib64/libicui18n.so.57", O_RDONLY|O_CLOEXEC) = 3 <0.000013> open("/lib64/libicuuc.so.57", O_RDONLY|O_CLOEXEC) = 3 <0.000007> open("/lib64/libicudata.so.57", O_RDONLY|O_CLOEXEC) = 3 <0.000015> open("/lib64/libicui18n.so.57", O_RDONLY|O_CLOEXEC) = 3 <0.000010> open("/lib64/libicuuc.so.57", O_RDONLY|O_CLOEXEC) = 3 <0.000007> open("/lib64/libicudata.so.57", O_RDONLY|O_CLOEXEC) = 3 <0.000008>

I wonder why your program shows the error message although it doesn’t even try to open the icu library.

I’m sorry - I have no idea.

Is your system a x86 system?
My nas is an arm v7 based system.

Don’t feel sorry, your effort to help is highly valued and i would like to thank you for all your trying to help.

what does running ldd on your app tell you ?

usually

    ldd <path to your app executable>

Hi Norman,
This gives the output below:

root@NAS520:/i-data/56772bbf/xojotest/xojoarm# ldd xojoarm XojoConsoleFrameworkARM.so => /i-data/56772bbf/xojotest/xojoarm/xojoarm Libs/XojoConsoleFrameworkARM.so (0x2ac1e000) libc.so.6 => /lib/libc.so.6 (0x2b020000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2ab0a000) librt.so.1 => /lib/librt.so.1 (0x2ab73000) libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x2ab99000) libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x2b158000) libpthread.so.0 => /usr/lib/libpthread.so.0 (0x2ab4c000) libdl.so.2 => /lib/libdl.so.2 (0x2abc8000) libm.so.6 => /lib/libm.so.6 (0x2b203000) libc++.so.1 => /i-data/56772bbf/xojotest/xojoarm/xojoarm Libs/libc++.so.1 (0x2b27d000) /lib/ld-linux-armhf.so.3 (0x2aad9000) libpcre.so.1 => /usr/lib/libpcre.so.1 (0x2abdb000) libffi.so.6 => /usr/lib/libffi.so.6 (0x2b3cf000)

Any idea what’s going wrong?

I thought maybe a missing dependency but that doesn’t seem to be it

What i find strange is that i get an error saying unable to load icu libraries and ldd doesn’t show any dependency on that.

I’m not sure whats loading it but you can run ldd on a dylib I think and see what it depends on (I’m not sure on that)
Try ldd on the XojoConsoleFrameworkARM.so

I don’t see it there either:

root@NAS520:/i-data/56772bbf/xojotest/xojoarm/xojoarm Libs# ldd XojoConsoleFrameworkARM.so librt.so.1 => /lib/librt.so.1 (0x2ab96000) libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x2aaec000) libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x2afd5000) libpthread.so.0 => /usr/lib/libpthread.so.0 (0x2ab1b000) libdl.so.2 => /lib/libdl.so.2 (0x2ab82000) libm.so.6 => /lib/libm.so.6 (0x2b080000) libc++.so.1 => /i-data/56772bbf/xojotest/xojoarm/xojoarm Libs/./libc++.so.1 (0x2b0fa000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2b24c000) libc.so.6 => /lib/libc.so.6 (0x2b279000) /lib/ld-linux.so.3 (0x2ab51000) libpcre.so.1 => /usr/lib/libpcre.so.1 (0x2b3b1000) libffi.so.6 => /usr/lib/libffi.so.6 (0x2abad000)

Hello Andre and all,

have you managed to get a Xojo app running?

I have the same issue but on an x86 hardware with a Buildroot environment.

RuntimeCore/ICUStable.cpp: 79
Failure Condition: sLibraryPtr
Could not load ICU library
Aborted

Here’s output of ldd and find for icu library files… I’ve tried to add those to the path, no help.

ldd ./test.bin

    linux-gate.so.1 (0xb76ee000)
    librt.so.1 => /lib/librt.so.1 (0xb76e1000)
    libdl.so.2 => /lib/libdl.so.2 (0xb76dc000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xb76bf000)
    libc.so.6 => /lib/libc.so.6 (0xb74fe000)
    /lib/ld-linux.so.2 (0xb76ef000)

ldd ./Libs/XojoConsoleFramework32.so

    linux-gate.so.1 (0xb7799000)
    librt.so.1 => /lib/librt.so.1 (0xb711e000)
    libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb70ed000)
    libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb70eb000)
    libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb6ffa000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xb6fdc000)
    libdl.so.2 => /lib/libdl.so.2 (0xb6fd7000)
    libm.so.6 => /lib/libm.so.6 (0xb6f8b000)
    libc++.so.1 => /TEST/bin/./Libs/libc++.so.1 (0xb6e07000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb6df1000)
    libc.so.6 => /lib/libc.so.6 (0xb6c30000)
    /lib/ld-linux.so.2 (0xb779a000)
    libffi.so.6 => /usr/lib/libffi.so.6 (0xb6c29000)

find -name icu

./usr/lib/libicuio.so
./usr/lib/libicudata.so.54
./usr/lib/libicuuc.so.54.1
./usr/lib/libicui18n.so.54.1
./usr/lib/libicui18n.so.54
./usr/lib/libicutu.so.54.1
./usr/lib/icu
./usr/lib/libicudata.so
./usr/lib/libicudata.so.54.1
./usr/lib/libicule.so.54.1
./usr/lib/libicule.so
./usr/lib/libicutest.so.54.1
./usr/lib/libicui18n.so
./usr/lib/libiculx.so
./usr/lib/libicuuc.so.54
./usr/lib/libicuio.so.54.1
./usr/lib/libicutu.so
./usr/lib/libicutest.so.54
./usr/lib/libiculx.so.54
./usr/lib/libicutu.so.54
./usr/lib/libicutest.so
./usr/lib/libiculx.so.54.1
./usr/lib/libicuuc.so
./usr/lib/libicule.so.54
./usr/lib/libicuio.so.54
./usr/bin/icuinfo
./usr/sbin/icupkg
./usr/share/icu