[solved] Re: Linking libraries for compat_linux

Chris eagletree at hughes.net
Sun Dec 21 19:35:09 UTC 2008

On Dec 19, 2008, at 9:46 AM, Chris wrote:

> I've bumped into a library I can't resolve and I must have a  
> disconnect
> in how the linux_compat works because I can't see how it could be  
> solved.

I found that using FreeBSD Port fam for the daemon with openSUSE 10
fam 2.7.0 for my /compat/linux/lib/libfam.so* worked. Other fam versions
from other linux distributions failed. I'm able to detect file
changes with a linux binary that employs libfam.so. I tested it using  
fileschanged application provided with the linux fam version. qbmonitord
also works with this configuration.

> I have the following:
> * compat_linux enabled in the kernel,
> * /usr/ports/emulators/linux_base_fc7
> * sysctl kern.fallback_elf_brand=3
> * rpm2cpio to alter rpms
> * cpio to create the directories and place the files where they  
> belong in /compat/linux.
> I have a program that now has all it's libraries resolved but one in
> preparation to attempt to run the Linux Quickbooks install on FreeBSD.
> The ldd output, prior to installing /usr/ports/devel/fam (a  
> required shared
> library) looks like this.
> ldd ./opt/qbes7/util/qbmonitord
> ./opt/qbes7/util/qbmonitord:
>         libfam.so.0 => not found
>         libpthread.so.0 => /lib/libpthread.so.0 (0x28072000)
>         libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x28088000)
>         libm.so.6 => /lib/libm.so.6 (0x28171000)
>         libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x28198000)
>         libc.so.6 => /lib/libc.so.6 (0x281a4000)
>         /lib/ld-linux.so.2 (0x28054000)
> I install fam to get rid of the not found, perform the following link:
> 	ln /usr/local/lib/libfam.so.0 /compat/linux/lib/libfam.so.0
> and then I get this:
> ldd ./opt/qbes7/util/qbmonitord
> ./opt/qbes7/util/qbmonitord:
> ./opt/qbes7/util/qbmonitord: error while loading shared libraries: / 
> lib/libfam.so.0: ELF file OS ABI invalid
> ./opt/qbes7/util/qbmonitord: exit status 127
> which kind of makes sense since this library is not a linux  
> library. I'd read
> that I don't need to brandelf -t linux a library but I tried that  
> anyway,
> realizing it was likely meaningless (or harmful). It didn't help of  
> course.
> My next thought was to try and get a libfam.so.0 binary from a  
> linux distro
> but stopped when it occurred to me that it would be illogical since  
> fam uses
> kqueue on FreeBSD rather than something called imon. imon is not  
> available
> for FreeBSD so a linux version shouldn't be able to function if it  
> expects that. On
> FreeBSD, fam configures itself to not use imon.
> What is the appropriate course of action to get a linux flavor  
> shared library
> for fam (or anything which runs into such conflicts) that will work  
> on FreeBSD
> yet be recognized as suitable for linux under the compat mode?
> _______________________________________________
> freebsd-questions at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to "freebsd-questions- 
> unsubscribe at freebsd.org"

More information about the freebsd-questions mailing list