Closed abitrolly closed 4 months ago
easy to find out by removing the libs. i think the sodtware loads libraries by itself, it has so called modules as shared libs as plugins which are linked dynamically.
I don't think it is easy. Removed cjson
and SDL from Homebrew and ocp
still works. Maybe finds lib in the system, or maybe it should fail when it calls some function.
so you're using brew with linux. what os/release? just to be able to reproduce, will also try to figure out (unless stian sheds some light to the question faster than me)
Fedora 40.
I'm on debian, and there I have these files, where one would run ldd against:
/usr/lib/ocp/autoload/35-devpalsa.so
/usr/lib/ocp/autoload/35-devpnone.so
/usr/lib/ocp/autoload/35-devposs.so
/usr/lib/ocp/autoload/35-devpsdl2.so
/usr/lib/ocp/autoload/35-devwmix.so
/usr/lib/ocp/autoload/35-devwmixf.so
/usr/lib/ocp/autoload/35-devwnone.so
/usr/lib/ocp/autoload/95-playay.so
/usr/lib/ocp/autoload/95-playcda.so
/usr/lib/ocp/autoload/95-playflac.so
/usr/lib/ocp/autoload/95-playgmd.so
/usr/lib/ocp/autoload/95-playgme.so
/usr/lib/ocp/autoload/95-playhvl.so
/usr/lib/ocp/autoload/95-playit.so
/usr/lib/ocp/autoload/95-playmp2.so
/usr/lib/ocp/autoload/95-playogg.so
/usr/lib/ocp/autoload/95-playopl.so
/usr/lib/ocp/autoload/95-playsid.so
/usr/lib/ocp/autoload/95-playtimidity.so
/usr/lib/ocp/autoload/95-playwav.so
/usr/lib/ocp/autoload/95-playxm.so
/usr/lib/ocp/autoload/95-playym.so
/usr/lib/ocp/autoload/freverb.so
/usr/lib/ocp/autoload/ireverb.so
/usr/lib/ocp/libocp.so
Basically, rpm packages, are built from srpm, so check the source how it's built.
Usuallt things are linked dynamically, except for stuff like appimage,snap,flatpak
Or you have special purpose/embedded stuff, then some use static linking.
Ah wait so you use brew, let's check the package... that'd be here: https://github.com/Homebrew/homebrew-core/blob/faa03ef71de4f53f92f79dc46e5c9eb59d377bdd/Formula/o/ocp.rb
AFAIK there's no -static there or in upstream. So the answer is definitely no, by default it is not linked statically.
From running ldd
on all .so
files in ocp
dir it appears that libs are indeed linked dynamically.
Thanks for the hint.
$ ldd `fd -p '\.so' ../linuxbrew/.linuxbrew/Cellar/ocp` | grep -v '^\.\.' | sort | sed -r 's/\(.+//' | uniq
/lib64/ld-linux-x86-64.so.2
libancient.so.2 => /home/linuxbrew/.linuxbrew/opt/ancient/lib/libancient.so.2
libasound.so.2 => /home/linuxbrew/.linuxbrew/opt/alsa-lib/lib/libasound.so.2
libbz2.so.1.0 => /home/linuxbrew/.linuxbrew/opt/bzip2/lib/libbz2.so.1.0
libcjson.so.1 => /home/linuxbrew/.linuxbrew/opt/cjson/lib/libcjson.so.1
libc.so.6 => /lib64/libc.so.6
libdiscid.so.0 => /home/linuxbrew/.linuxbrew/opt/libdiscid/lib/libdiscid.so.0
libFLAC.so.12 => /home/linuxbrew/.linuxbrew/opt/flac/lib/libFLAC.so.12
libfreetype.so.6 => /home/linuxbrew/.linuxbrew/opt/freetype/lib/libfreetype.so.6
libgcc_s.so.1 => /home/linuxbrew/.linuxbrew/lib/libgcc_s.so.1
libgcc_s.so.1 => /home/linuxbrew/.linuxbrew/opt/gcc/lib/gcc/current/libgcc_s.so.1
libgme.so.0 => /home/linuxbrew/.linuxbrew/opt/game-music-emu/lib/libgme.so.0
libjpeg.so.8 => /home/linuxbrew/.linuxbrew/opt/jpeg-turbo/lib/libjpeg.so.8
libmad.so.0 => /home/linuxbrew/.linuxbrew/opt/mad/lib/libmad.so.0
libm.so.6 => /lib64/libm.so.6
libncursesw.so.6 => /home/linuxbrew/.linuxbrew/opt/ncurses/lib/libncursesw.so.6
libogg.so.0 => /home/linuxbrew/.linuxbrew/opt/libogg/lib/libogg.so.0
libpng16.so.16 => /home/linuxbrew/.linuxbrew/opt/libpng/lib/libpng16.so.16
libSDL2-2.0.so.0 => /home/linuxbrew/.linuxbrew/opt/sdl2/lib/libSDL2-2.0.so.0
libstdc++.so.6 => /home/linuxbrew/.linuxbrew/lib/libstdc++.so.6
libstdc++.so.6 => /home/linuxbrew/.linuxbrew/opt/gcc/lib/gcc/current/libstdc++.so.6
libvorbisfile.so.3 => /home/linuxbrew/.linuxbrew/opt/libvorbis/lib/libvorbisfile.so.3
libvorbis.so.0 => /home/linuxbrew/.linuxbrew/Cellar/libvorbis/1.3.7/lib/libvorbis.so.0
libX11.so.6 => /home/linuxbrew/.linuxbrew/opt/libx11/lib/libX11.so.6
libXau.so.6 => /home/linuxbrew/.linuxbrew/opt/libxau/lib/libXau.so.6
libxcb.so.1 => /home/linuxbrew/.linuxbrew/opt/libxcb/lib/libxcb.so.1
libXcursor.so.1 => /home/linuxbrew/.linuxbrew/opt/libxcursor/lib/libXcursor.so.1
libXdmcp.so.6 => /home/linuxbrew/.linuxbrew/opt/libxdmcp/lib/libXdmcp.so.6
libXext.so.6 => /home/linuxbrew/.linuxbrew/opt/libxext/lib/libXext.so.6
libXfixes.so.3 => /home/linuxbrew/.linuxbrew/opt/libxfixes/lib/libXfixes.so.3
libXi.so.6 => /home/linuxbrew/.linuxbrew/opt/libxi/lib/libXi.so.6
libXrandr.so.2 => /home/linuxbrew/.linuxbrew/opt/libxrandr/lib/libXrandr.so.2
libXrender.so.1 => /home/linuxbrew/.linuxbrew/opt/libxrender/lib/libXrender.so.1
libXss.so.1 => /home/linuxbrew/.linuxbrew/opt/libxscrnsaver/lib/libXss.so.1
libz.so.1 => /home/linuxbrew/.linuxbrew/opt/zlib/lib/libz.so.1
linux-vdso.so.1
I am using
ocp
from Homebrew, It depends on a lot of libraries for installation, likecjson
, butldd
shows no dependencies.So is the
ocp
build static by default?