1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
Unigine Heaven on Pi 4: Symbol `dlopen` not found
The Linux-native build of [Unigine Heaven](https://benchmark.unigine.com/heaven) tries to call `dlopen`, which seems to fail due to a lack of implementation rather than the target library not being found:
```
~/Downloads/Unigine_Heaven-4.0/bin $ ./heaven_x64
Dynarec for ARM64, with extension: ASIMD CRC32 PageSize:4096
Box64 with Dynarec v0.1.7 23bbab1 built on Mar 2 2022 16:16:12
Using default BOX64_LD_LIBRARY_PATH: ./:lib/:lib64/:x86_64/:bin64/:libs64/
Using default BOX64_PATH: ./:bin/
Counted 37 Env var
Env[00]: SHELL=/bin/bash
Env[01]: LANGUAGE=en_US.UTF-8
Env[05]: NO_AT_BRIDGE=1
Env[06]: PWD=/home/pi/Downloads/Unigine_Heaven-4.0/bin
Env[07]: LOGNAME=pi
Env[08]: XDG_SESSION_TYPE=tty
Env[09]: MOTD_SHOWN=pam
Env[10]: HOME=/home/pi
Env[12]: LANG=en_US.UTF-8
Env[13]: LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
Env[14]: SSH_CONNECTION=192.168.8.187 57040 192.168.8.209 22
Env[15]: XDG_SESSION_CLASS=user
Env[17]: TERM=xterm-256color
Env[18]: USER=pi
Env[19]: SHLVL=1
Env[22]: XDG_SESSION_ID=28
Env[23]: XDG_RUNTIME_DIR=/run/user/1000
Env[25]: SSH_CLIENT=192.168.8.187 57040 22
Env[27]: LC_ALL=en_US.UTF-8
Env[28]: PATH=/home/pi/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
Env[29]: DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
Env[30]: SSH_TTY=/dev/pts/0
Env[32]: TEXTDOMAIN=Linux-PAM
Env[33]: OLDPWD=/home/pi/Downloads/Unigine_Heaven-4.0
Env[34]: BOX64_PATH=.:bin
Env[35]: BOX64_LD_LIBRARY_PATH=.:lib:lib64
Env[36]: _=/usr/local/bin/box64
Looking for ./heaven_x64
Using emulated libUnigine_x64.so
Using emulated /lib/x86_64-linux-gnu/libstdc++.so.6
Using native(wrapped) libm.so.6
Using emulated /lib/x86_64-linux-gnu/libgcc_s.so.1
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux-x86-64.so.2
Using native(wrapped) libpthread.so.0
Using native(wrapped) librt.so.1
Using native(wrapped) libX11.so.6
Using native(wrapped) libXext.so.6
Using native(wrapped) libxcb.so.1
Using native(wrapped) libXau.so.6
Using native(wrapped) libXdmcp.so.6
Using native(wrapped) libXrandr.so.2
Using native(wrapped) libXrender.so.1
Using native(wrapped) libXinerama.so.1
Error: PltResolver: Symbol dlopen(ver 0: dlopen) not found, cannot apply R_X86_64_JUMP_SLOT 0x7f96105198 (0x7f954242c6) in libUnigine_x64.so
```
This is the output when trying to run the benchmark binary directly, but the exact same behavior can be observed when trying to run via the launcher (which itself runs fine using the provided script after changing the `uname -m` call to test for `aarch64`). All libraries live under `bin` with the exception of `libopenal.so`, which I've explicitly copied there from the `x64` subdirectory. Fiddling around with `LD_LIBRARY_PATH` and `BOX64_LD_LIBRARY_PATH` doesn't change things, but library loading in general seems to work fine as I can see stuff from `libUnigine_x64.so` being called. That said, I don't know *what* it wants to `dlopen`, increasing logging verbosity didn't help in figuring that out.
```
~/Downloads/Unigine_Heaven-4.0/bin $ file libUnigine_x64.so
libUnigine_x64.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=64948444abf66110631540b6f560901b5ce3634d, stripped
~/Downloads/Unigine_Heaven-4.0/bin $ file heaven_x64
heaven_x64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.18, BuildID[sha1]=1f868f35c960179f0adae80ede5c869693df024a, stripped
~/Downloads/Unigine_Heaven-4.0/bin $ ldd heaven_x64
not a dynamic executable
```
I'm testing on a Raspberry Pi 4 running the official 64-bit Raspberry Pi OS:
```
$ uname -rm
5.10.92-v8+ aarch64
```
|