Solved (AnyDesk) Can we run 32bit software in a 64bit OS ?

Hi guys,

Here is the problem i found yesterday trying to run AnyDesk on FreeBSD 11.2.
https://anydesk.com/platforms/freebsd#updates

-] AnyDesk releases its software for FreeBSD. (great)
Code:
$> file anydesk 
anydesk: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, for FreeBSD 10.2, FreeBSD-style, stripped

-] I tried to run it after filling up the associated README request: "mount procfs", "kldload mqueuefs".

-] I tried to run the software and i get
Code:
/usr/local/lib/libgtkglext-x11-1.0.so.0: unsupported file layout

-] Taking a look at the library dependency i see :
Code:
anydesk:
        libgtkglext-x11-1.0.so.0 => not found (0)
        libgdkglext-x11-1.0.so.0 => not found (0)
        libGL.so.1 => not found (0)
        libgtk-x11-2.0.so.0 => not found (0)
        libX11.so.6 => not found (0)
        librt.so.1 => /usr/lib32//librt.so.1 (0x2866b000)
        libgdk-x11-2.0.so.0 => not found (0)
        libgio-2.0.so.0 => not found (0)
        libgdk_pixbuf-2.0.so.0 => not found (0)
        libgobject-2.0.so.0 => not found (0)
        libglib-2.0.so.0 => not found (0)
        libxcb.so.1 => not found (0)
        libxcb-shm.so.0 => not found (0)
        libthr.so.3 => /usr/lib32//libthr.so.3 (0x28671000)
        libcairo.so.2 => not found (0)
        libpango-1.0.so.0 => not found (0)
        libXi.so.6 => not found (0)
        libX11-xcb.so.1 => not found (0)
        libXrandr.so.2 => not found (0)
        libXtst.so.6 => not found (0)
        libXext.so.6 => not found (0)
        libXfixes.so.3 => not found (0)
        libXdamage.so.1 => not found (0)
        libc++.so.1 => /usr/lib32//libc++.so.1 (0x28694000)
        libcxxrt.so.1 => /usr/lib32//libcxxrt.so.1 (0x28752000)
        libm.so.5 => /usr/lib32//libm.so.5 (0x2876b000)
        libgcc_s.so.1 => /usr/lib32//libgcc_s.so.1 (0x28796000)
        libc.so.7 => /usr/lib32//libc.so.7 (0x287a2000)

-] I see there are libraries in /usr/lib32 but, for example libglext is not there, even
if I installed from package.
Code:
$> locate libgtkglext
/usr/local/lib/libgtkglext-x11-1.0.a
/usr/local/lib/libgtkglext-x11-1.0.so
/usr/local/lib/libgtkglext-x11-1.0.so.0
/usr/local/lib/libgtkglext-x11-1.0.so.0.0.0


[q1] => My question then is, "Is it possible to run 32 bit sofware in FreeBSD when architecture is 64
and the os is 64 bit ? "

[q2] => Second question, if the first resolves in a positive answer. "How to I get the 32 bit libraries "

[q3] => Third question, "Is the error message 'unsupported file layout' related to the 32 bit thing ? "

bye
n.
 
Why not just use deskutils/anydesk and build a proper x86_64 package yourself if anydesk fails to provide one on their website?

Regarding the 32bit compatibility: if you selected to install the 32bit libs you should have all available 32bit libraries in /usr/lib32. However, I don't think that packages for x86_64 will come with and install 32bit libraries by default; you'll have to build them yourself from ports with 32bit support. So instead of building every dependency with 32bit support, it'd be way easier to just build anydesk for your native architecture.
 
You can run 32 bit binaries on a 64 bit FreeBSD. But, there's no multi-architecture framework, so installing ports will only install the same architecture as the host. There's nothing provisioned for installing 32 bit libraries from third party software on a 64 bit OS.

The "simplest" way to circumvent this limitation is by creating a 32 bit jail and install the applications and libraries there.
 
Back
Top