bbcb / bbcp

BlackBox Cross-Platform (Windows, GNU/Linux, OpenBSD, FreeBSD)
BSD 2-Clause "Simplified" License
71 stars 16 forks source link

GTK libraries not found for FreeBSD 13.2 build #20

Open mmlmn opened 1 year ago

mmlmn commented 1 year ago

When built on the latest FreeBSD [0] with GUI support, some gtk libraries seem not to be linked correctly [1].

The library object files reported missing – libgtk-x11-2.0.so and libglib-2.0.so – are present on the filesystem under /usr/local/lib [2].

Has anyone tried troubleshooting this? (build dump [3])

[0] system details $ uname -mrs FreeBSD 13.2-RELEASE amd64

[1] exec error (after ./switch-target FreeBSD GUI && ./build) $ ./run-BlackBox

****
* BlackBox
* HostGui: can not load libgtk-x11-2.0.so
****

****
* Error 01
* libglib-2.0.so: code file not found
****

[2] libraries available $ find /usr/local/lib ( -type f -o -type l ) -a \ ( -name 'libglib-2.0.so' -o -name 'libgtk-x11-2.0.so' )

/usr/local/lib/libglib-2.0.so
/usr/local/lib/libgtk-x11-2.0.so

[3] build log https://zerobin.net/?523a20b374dcd98d#Jm44lm9+r2qi/4yjSKgHlHIR8LSIw9HIAxdcLm6s4V0=

iadenisov commented 1 year ago

Please, try to build BlackBox 2.0 from branch blackbox20, with script build-fbsd There is correct library there in module FbsdGui etc. Then with working instance of BlackBox 2.0 you can edit and fix version of libraries in master branch. Actually master is not supported well, I will replace it soon to blackbox20 content.

mmlmn commented 1 year ago

Hi, Ivan.

Thank you for the prompt reply. I actually tried building from -b blackbox20 before. The build seems to succeed and link properly [0].

The startup binary still reports: $ ./blackbox

****
* Error 01
* [FbsdInit] MODULE  IMPORT libglib-2.0.so: file not found!
****

I tried greping to see if I can modify some paths, but I mostly see binaries like dev0fbsd and so I am at a loss.

[0] https://zerobin.net/?eaf69d399f351e23#5KQxKl7ZRAtNKZoM60/NrWerVT+wenucgrA0KRLO2ZA=

iadenisov commented 1 year ago

Thank you for your report, not very much users of FreeBSD reporting. I fixed the libglib-2.0.so to libglib-2.0.so.0 and add .0 to gtk and gdk libraries also. Please, pull last commits, and try to build and run again.

mmlmn commented 1 year ago

Thank you for taking the time to look into this. Your changes did have the effect that the binary now tries to import the shared module with the ".0" suffix. It is still missing though.

$ ./blackbox

****
* Error 01
* [FbsdInit] MODULE  IMPORT libglib-2.0.so.0: file not found!
****

For reference, these are the relevant contents of the /usr/local/lib path:

$ ls -lA /usr/local/lib/libglib-2.0.so*

lrwxr-xr-x  1 root  wheel       16 25 Mai  18:17 /usr/local/lib/libglib-2.0.so -> libglib-2.0.so.0
lrwxr-xr-x  1 root  wheel       23 25 Mai  18:17 /usr/local/lib/libglib-2.0.so.0 -> libglib-2.0.so.0.7600.3
-rwxr-xr-x  1 root  wheel  1332872 25 Mai  18:17 /usr/local/lib/libglib-2.0.so.0.7600.3

So just symbolic link aliases to the specific version. I suppose more things would not work were the include path to be misspecified (e.g. GNU/Linux's /usr/lib vs FreeBSD's /usr/local/lib)?

adimetrius commented 1 year ago

As far as I remember, no import paths are written into blackbox binaries, neither into .ocf, nor into the startup executable. Just the module names. So I wonder if smth is wrong/different with how FBSD looks up paths as opposed to Linux.

I may be totally incorrect, but you showed amd64. Under Linux (on my computer), the imported binary library files are located in /lib/i386-linux-gnu, and I have to explicitly install the 386 files on my amd64 system. I wonder if the error message 'file not found' could actually be incorrect, and in fact the problem could be that 64-bit binaries are attempted to be linked into the i386 blackbox executable.

iadenisov commented 1 year ago

Sure, I just mentioned, that the version you are using is amd64 so i386 libraries need to be set up, or they can be located in some path. I will make some experiments soon with amd64, and write, what you should do.