[solved] Re: Linking libraries for compat_linux
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- unsubscr...@freebsd.org ___ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to freebsd-questions-unsubscr...@freebsd.org
Re: Linking libraries for compat_linux
On Fri, 19 Dec 2008 09:46:03 -0800 Chris wrote: This question is may be better unswered at emulation@ ML. 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 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? Try to create and use linux-fam port. WBR -- bsam ___ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to freebsd-questions-unsubscr...@freebsd.org
Re: Linking libraries for compat_linux
On Dec 20, 2008, at 6:05 AM, Boris Samorodov wrote: On Fri, 19 Dec 2008 09:46:03 -0800 Chris wrote: This question is may be better unswered at emulation@ ML. Oops, I didn't ever notice that list as I've never needed Linux before. I hate to trouble development lists with an operational issue but this one is starting to look like an incompatibility that is beyond me. The Linux and FreeBSD versions of gamin both fail on inotify_init. Not having the source to the program I'm trying to run makes it very difficult to fix even though the functionality is there (perhaps even superior) on FreeBSD. I ended up using the linux libfam.so.0 from the gamin distribution for Fedora 9. Using it's server fails instantly, using the freebsd port version, the server doesn't fail until the Linux client library attempts to connect. Then it too gets inotify_init not implemented. The Fam list appears to be defunct and I've not yet tried the direct mail contact to the gamin development page. I'm assuming the answer would be that you use native FreeBSD libfam.so on FreeBSD and the linux version on Linux. I've no way to tell the Intuit daemon to do that because of the ABI error and I presume there is an underlying reason why a native library can't be used by a linux binary. I will try the other list if no one has run into a similar problem with other Linux apps. I may be kicking a dead horse but it seems others have talked about using FreeBSD in this manner and it makes it an interesting challenge. The time I'm investing in this is probably not any more time that it would take to configure and secure an openSUSE or Fedora system (having never bothered with them before). Plus it would mean not adding an additional server into my net just for a trivial SMB/file monitoring application. Thanks for the response. 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 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? Try to create and use linux-fam port. I also tried this but it appears that gamin is a more recent implementation. It also provides the libfam.so.0. WBR -- bsam ___ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to freebsd-questions- unsubscr...@freebsd.org ___ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to freebsd-questions-unsubscr...@freebsd.org