OpenLightingProject / ola

The Open Lighting Architecture - The Travel Adaptor for the Lighting Industry
https://www.openlighting.org/ola/
Other
644 stars 204 forks source link

olad is looking in the wrong location for libolaserver.so.0 #1956

Open rainfay opened 7 months ago

rainfay commented 7 months ago
System info :
rainfay@port:~/ola-0.10.9/olad$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye
--- GCC info ----
rainfay@port:~/ola-0.10.9/olad$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/10/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa:hsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 10.2.1-6' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-10-Km9U7s/gcc-10-10.2.1/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-10-Km9U7s/gcc-10-10.2.1/debian/tmp-gcn/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-mutex
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.2.1 20210110 (Debian 10.2.1-6)
rainfay@port:~/ola-0.10.9/olad$

Okay issue description 
Fresh build 
After running 
#make all 
#sudo make install 
then running the olad command via 
root@port:~# olad
olad: error while loading shared libraries: libolaserver.so.0: cannot open shared object file: No such file or directory
root@port:~#

vs running the following in the build  directory which works 
rainfay@port:~/ola-0.10.9/olad$ ./olad
common/io/IOUtils.cpp:39: open(/dev/dmx0): No such file or directory
plugins/opendmx/OpenDmxPlugin.cpp:80: Could not open /dev/dmx0 No such file or directory
common/io/IOUtils.cpp:39: open(/dev/kldmx0): No such file or directory
plugins/karate/KaratePlugin.cpp:79: Could not open /dev/kldmx0 No such file or directory
plugins/pathport/PathportNode.cpp:164: Pathport packet too small to fit a pdu header
plugins/pathport/PathportNode.cpp:164: Pathport packet too small to fit a pdu header
^Crainfay@port:~/ola-0.10.9/olad$

Attached the following straces 

[strace OLAD.txt](https://github.com/OpenLightingProject/ola/files/14814640/strace.OLAD.txt)
Running the non working command 
[straceinsrc.txt](https://github.com/OpenLightingProject/ola/files/14814641/straceinsrc.txt)
Running the working command 

Looking at the non working strace.
It searches for libolaserver.so.0 in a lot of locations then gives up at ...

openat(AT_FDCWD, "/usr/lib/libolaserver.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

running a find command 
root@port:~# find /usr/  -type f -name "libolaserver*"
/usr/local/lib/libolaserverplugininterface.a
/usr/local/lib/libolaserver.so.0.0.0
/usr/local/lib/pkgconfig/libolaserver.pc
/usr/local/lib/libolaserver.la
/usr/local/lib/libolaserver.a
/usr/local/lib/libolaserverplugininterface.la
/usr/local/lib/libolaserverplugininterface.so.0.0.0
---
The location the program is looking for the library is the wrong location.

vs the working strace 
openat(AT_FDCWD, "/home/rainfay/ola-0.10.9/olad/.libs/tls/x86_64/x86_64/libolaserver.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/rainfay/ola-0.10.9/olad/.libs/tls/x86_64/x86_64", 0x7fff7e1937e0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/rainfay/ola-0.10.9/olad/.libs/tls/x86_64/libolaserver.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/rainfay/ola-0.10.9/olad/.libs/tls/x86_64", 0x7fff7e1937e0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/rainfay/ola-0.10.9/olad/.libs/tls/x86_64/libolaserver.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/rainfay/ola-0.10.9/olad/.libs/tls/x86_64", 0x7fff7e1937e0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/rainfay/ola-0.10.9/olad/.libs/tls/libolaserver.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/rainfay/ola-0.10.9/olad/.libs/tls", 0x7fff7e1937e0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/rainfay/ola-0.10.9/olad/.libs/x86_64/x86_64/libolaserver.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/rainfay/ola-0.10.9/olad/.libs/x86_64/x86_64", 0x7fff7e1937e0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/rainfay/ola-0.10.9/olad/.libs/x86_64/libolaserver.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/rainfay/ola-0.10.9/olad/.libs/x86_64", 0x7fff7e1937e0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/rainfay/ola-0.10.9/olad/.libs/x86_64/libolaserver.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/rainfay/ola-0.10.9/olad/.libs/x86_64", 0x7fff7e1937e0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/rainfay/ola-0.10.9/olad/.libs/libolaserver.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\217\4\0\0\0\0\0"..., 832) = 832

Looks in the same directory structure and finds it... 
rainfay commented 7 months ago

Looking at the makefile... my best guess is the default value in $(libdir) does not line up with where Gcc is saying where the program can find the library on the system.