bbcp icon indicating copy to clipboard operation
bbcp copied to clipboard

GTK libraries not found for FreeBSD 13.2 build

Open mmlmn opened this issue 1 year ago • 6 comments

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=

mmlmn avatar Jun 04 '23 14:06 mmlmn

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.

iadenisov avatar Jun 04 '23 18:06 iadenisov

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=

mmlmn avatar Jun 04 '23 19:06 mmlmn

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.

iadenisov avatar Jun 04 '23 21:06 iadenisov

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)?

mmlmn avatar Jun 04 '23 22:06 mmlmn

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.

adimetrius avatar Jun 06 '23 19:06 adimetrius

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.

iadenisov avatar Jun 07 '23 01:06 iadenisov