Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Dec 2008 11:34:57 -0800
From:      Chris <eagletree@hughes.net>
To:        FreeBSD-Questions Questions <freebsd-questions@freebsd.org>
Subject:   [solved] Re: Linking libraries for compat_linux
Message-ID:  <A8108BBE-B91C-4DC0-A0E7-E8D8D428E631@hughes.net>
In-Reply-To: <34058EDE-BC14-4DCC-AF3C-100F77DEE486@hughes.net>
References:  <34058EDE-BC14-4DCC-AF3C-100F77DEE486@hughes.net>

next in thread | previous in thread | raw e-mail | index | archive | help

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  
the
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@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to "freebsd-questions- 
> unsubscribe@freebsd.org"
>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?A8108BBE-B91C-4DC0-A0E7-E8D8D428E631>