Linux Kompatibilität

kosovafan

Well-Known Member
Hallo,

ich versuche weiterhin mein Ubuntu Desktop nach FreeBSD zu portieren, was soweit auch klappt solange FreeBSD eigene Ports hat. Sobald die Programme aber auf Linux Kompatibilität angewiesen sind klappt das nicht mehr.

Code:
$ googleearth
./googleearth-bin: symbol lookup error: ./libge_net.so: undefined symbol: _ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE, version GLIBCXX_3.4

$ eagle
/usr/local/share/eagle5/bin/eagle: symbol lookup error: /usr/lib/libstdc++.so.6: undefined symbol: _ZNSt8messagesIcE2idE, version GLIBCXX_3.4

So richtig werde ich daraus nicht schlau.

Code:
$ locate libstdc++.so.6
/compat/linux/usr/lib/libstdc++.so.6
/compat/linux/usr/lib/libstdc++.so.6.0.10
/compat/linux/usr/lib/libstdc++.so.6.0.16
/compat/linux/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.16-gdb.py
/compat/linux/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.16-gdb.pyc
/compat/linux/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.16-gdb.pyo
/usr/lib/libstdc++.so.6
/usr/obj/usr/src/tmp/usr/lib/libstdc++.so.6

Die libge_net.so ist auf den System nicht zu finden.

Wo muss ich den Fehler suchen? Hat hier jemand Rat? Den er schmeisst immer Fehler raus, egal um welches Linux Programm es geht.


MFG
Silvio
 
Hast du die Linux binarys als elf-binary markiert?

Schau dir mal 'brandelf' an...
Code:
man brandelf
 
Hallo,


das habe ich jetzt gelesen. Das habe ich auch schon im Handbuch gelesen. Wenn ich das richtig verstehe, dann muss ich brandelf -t linux programm aufrufen oder?

Code:
freebsd-desk# brandelf -t linux /usr/local/bin/eagle
brandelf: file '/usr/local/bin/eagle' is not ELF format

Code:
freebsd-desk# brandelf -t linux /usr/local/bin/googleearth
brandelf: file '/usr/local/bin/googleearth' is not ELF format


MFG
Silvio
 
Hast du auch die Linux-Binärkompatibilität eingeschaltet? Also die Kernelmodule laden mit "kldload linux" oder mit dem Eintrag linux_enable="YES" in die rc.conf.

Laufen sollte das ganze. Wenn alle eingerichtet ist kannst du brandelf benutzen:

Code:
brandelf -t Linux_Programm

Du musst mal schauen nicht das du versuchst brandelf auf ein shellscript anzuwenden das würde glaube ich nicht klappen :)

Wenn du interesse hast kannst du dir auch mal PC-BSD ansehen da ist die Linuxumgebung schon fertig eingerichtet und es gibt z.B Google Earth als fertiges Paket zum installieren.

Grüße
 
Hallo,


stimmt, sind Shellscripts. Ich habe brandelf jetzt auf die entsprechenden Binarys angeweden,
aber das Resultat bleibt das gleiche.

Code:
freebsd-desk# brandelf -t linux /usr/local/lib/linux-firefox/firefox
freebsd-desk# brandelf -t linux /usr/local/share/eagle5/bin/eagle
freebsd-desk# brandelf -t linux /usr/local/share/google-earth/googleearth-bin

Code:
$ /usr/local/bin/linux-firefox
/usr/local/lib/linux-firefox/firefox: symbol lookup error: /usr/lib/libstdc++.so.6: undefined symbol: _ZNSt8messagesIcE2idE, version GLIBCXX_3.4

$ /usr/local/bin/eagle
/usr/local/share/eagle5/bin/eagle: symbol lookup error: /usr/lib/libstdc++.so.6: undefined symbol: _ZNSt8messagesIcE2idE, version GLIBCXX_3.4

$ googleearth
./googleearth-bin: symbol lookup error: ./libge_net.so: undefined symbol: _ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE, version GLIBCXX_3.4

Code:
freebsd-desk# kldstat
Id Refs Address    Size     Name
 1   21 0xc0400000 8c6d08   kernel
 2    1 0xc0cc7000 4864     sem.ko
 3    1 0xc41eb000 8000     linprocfs.ko
 4    1 0xc41f3000 28000    linux.ko
 5    1 0xc44ae000 9000     i915.ko
 6    1 0xc44b7000 15000    drm.ko


Code:
freebsd-desk# cat /etc/rc.conf | grep linux
linux_enable="YES"
MFG
Silvio
 
Ok:
- Wie hast du denn die Software installiert?
- Was gibt "pkg_info | grep linux" aus?
- Hast du sysutils/bsdadminscripts installiert? Dann lass mal pkg_libchk laufen. Gibt es eine Ausgabe?
 
Hallo,

Wie hast du denn die Software installiert?

Was gibt "pkg_info | grep linux" aus?

Code:
freebsd-desk# pkg_info | grep linux
linux-dri-7.4_1     Mesa-based DRI libraries, drivers and binaries (Linux Ubunt
linux-eagle5-5.11.0_1 An easy to use, yet powerful tool for designing printed cir
linux-f10-alsa-lib-1.0.21_1 The Advanced Linux Sound Architecture libraries (Linux Fedo
linux-f10-alsa-plugins-oss-1.0.21_2 OSS plugin for ALSA (Linux Fedora 10)
linux-f10-atk-1.24.0 Accessibility Toolkit, Linux/i386 binary (Linux Fedora 10)
linux-f10-cairo-1.8.0_1 Vector graphics library Cairo (Linux Fedora 10)
linux-f10-curl-7.19.6_1 The command line tool for transferring files with URL synta
linux-f10-cyrus-sasl2-2.1.22_1 RFC 2222 SASL (Simple Authentication and Security Layer) (L
linux-f10-dbus-glib-0.76 GLib bindings for D-Bus (Linux Fedora 10)
linux-f10-dbus-libs-1.2.4 Libraries for accessing D-BUS (Linux Fedora 10)
linux-f10-expat-2.0.1 Linux/i386 binary port of Expat XML-parsing library (Linux 
linux-f10-flashplugin-10.3r183.11 Adobe Flash Player NPAPI Plugin
linux-f10-fontconfig-2.6.0 An XML-based font configuration API for X Windows (Linux Fe
linux-f10-gtk2-2.14.7_3 GTK+ library, version 2.X (Linux Fedora 10)
linux-f10-hicolor-icon-theme-0.5 A high-color icon theme shell from the FreeDesktop project
linux-f10-jpeg-6b   RPM of the JPEG lib (Linux Fedora 10)
linux-f10-libasyncns-0.7 C library for executing DNS queries asynchronously (Linux F
linux-f10-libsigc++20-2.2.2 Callback Framework for C++ (Linux Fedora 10)
linux-f10-libssh2-0.18 The library implementing the SSH2 protocol (Linux Fedora 10
linux-f10-libv4l-0.6.2 Collection of video4linux support libraries (Fedora 10)
linux-f10-nspr-4.7.6 Netscape Portable Runtime (Linux Fedora 10)
linux-f10-nss-3.12.3.99.3_1 Network Security Services (Linux Fedora 10)
linux-f10-openldap-2.4.12_1 Lightweight Directory Access Protocol libraries (Linux Fedo
linux-f10-openssl-0.9.8g The OpenSSL toolkit (Linux Fedora 10)
linux-f10-pango-1.28.3 The pango library (Linux Fedora 10)
linux-f10-png-1.2.37_1 RPM of the PNG lib (Linux Fedora 10)
linux-f10-sqlite3-3.5.9_1 The library that implements an embeddable SQL database engi
linux-f10-tiff-3.8.2 The TIFF library, Linux/i386 binary (Linux Fedora 10)
linux-f10-xorg-libs-7.4_1 Xorg libraries (Linux Fedora 10)
linux-firefox-10.0.1,1 Web browser based on the browser portion of Mozilla
linux-sun-jre-1.6.0.30 Sun Java Runtime Environment 1.6 for Linux
linux_base-f10-10_4 Base set of packages needed in Linux mode for i386/amd64 (L
linuxdoc-1.1_1      The Linuxdoc SGML DTD

Hast du sysutils/bsdadminscripts installiert? Dann lass mal pkg_libchk laufen. Gibt es eine Ausgabe?

Code:
freebsd-desk# pkg_libchk
diablo-jdk-1.6.0.07.02_18: /usr/local/diablo-jdk1.6.0/bin/unpack200 misses libz.so.4
diablo-jdk-1.6.0.07.02_18: /usr/local/diablo-jdk1.6.0/jre/bin/unpack200 misses libz.so.4
diablo-jdk-1.6.0.07.02_18: /usr/local/diablo-jdk1.6.0/jre/lib/i386/libJdbcOdbc.so misses libodbcinst.so
diablo-jdk-1.6.0.07.02_18: /usr/local/diablo-jdk1.6.0/jre/lib/i386/libzip.so misses libz.so.4
eclipse-3.6.2: /usr/local/lib/eclipse/configuration/org.eclipse.osgi/bundles/150/1/.cp/libswt-awt-gtk-3659.so misses libjawt.so
jdk-1.6.0.3p4_28: /usr/local/jdk1.6.0/jre/lib/i386/libJdbcOdbc.so misses libodbcinst.so
swt-3.5.2: /usr/local/lib/libswt-awt-gtk-3557.so misses libjawt.so
swt-devel-3.6.2,1: /usr/local/lib/libswt-awt-gtk-3659.so misses libjawt.so

Mit der libswt habe ich oft Probleme, ich habe Anwendungen die darauf zugreifen, aber
wie man die Fehler behebt entzieht sich meinen Wissen.

MFG
Silvio
 
Noch einmal die Frage:

Wie hast du es installiert?

Was gibt folgendes aus?

Code:
uname -a
 
Hallo,


installiert sind alle Linuxanwendungen über das Portsystem. Libreoffice ist das einzige Package, alle anderen aus den Sourcen.

Code:
freebsd-desk# uname -a
FreeBSD freebsd-desk.silviosiefke.de 9.0-STABLE FreeBSD 9.0-STABLE #0: Sun Jan 22 05:07:25 CET 2012     siefke@freebsd-desk.silviosiefke.de:/usr/obj/usr/src/sys/SISIBSD  i386


MFG
Silvio
 
Du benutzt STABLE mit eigener Kernel Config?

Wie wäre es mit RELEASE und GENERIC-Kernel?! Weil so macht das keinen Sinn hier nach dem Fehler zu suchen ;) Wenn sich die ABI geändert hat dann müsstest du ggf. sogar noch einmal alle Ports neu bauen ...

Da ich STABLE aber eher selten mitverfolge, könnte ich dir nicht einmal sagen welche Änderungen seit dem Release dort eingeflossen sind.

Nachtrag:

Ok, die ABI sollte sich im 9er Zweig nicht ändern.
 
Zuletzt bearbeitet:
Hallo,

ich habe das so verstanden das Release doch der Entwicklungszweig ist oder nicht? Macht es nicht Sinn den Stable Zweig zu verfolgen?

Wie ändere ich den jetzt zum Release? Komplett neu installieren das ganze System?


MFG
Silvio
 
Ich zitiere einmal das Handbuch:

Code:
25.5.2.1. Was ist FreeBSD-STABLE?

FreeBSD-STABLE ist der Entwicklungszweig, auf dem Releases erstellt werden. Dieser Zweig ändert sich langsamer als FreeBSD-CURRENT und alle Änderungen hier sollten zuvor in FreeBSD-CURRENT ausgetestet sein. Beachten Sie, dass dies immer noch ein Entwicklungszweig ist und daher zu jedem Zeitpunkt die Quellen von FreeBSD-STABLE verwendbar sein können oder nicht. FreeBSD-STABLE ist Teil des Entwicklungsprozesses und nicht für Endanwender gedacht.

Im Handbuch ist recht gut erklärt worin die Unterschiede liegen. Am einfachsten ist es sicherlich das System neu aufzusetzen und bei 9.0 Release zu starten. Dann hast du ein "sauberes" System.

Hier noch ein Link zum Wiki: Klick
 
Zuletzt bearbeitet:
Hallo,

ja das passt mal wieder ich dachte auch so,

Die Bezeichnung STABLE kommt von „stabiler ABI (Binärschnittstelle)“ und nicht, wie oft fälschlich angenommen wird, von „stabilem System“.

Also heisst es wieder drei Tage warten und das jetzt wo es doch nach meinen Geschmack eingerichtet ist.

MFG
Silvio
 
Hallo,

muss ich mein SRC File ändern?

Code:
*default host=cvsup2.de.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_9
*default delete use-rel-suffix
*default compress
src-all


MFG
Silvio
 
hast du das in deine /etc/fstab eingetragen, linproc und linsysfs ?
Ich nutze das Linux so selten, wie es nur möglich ist. Aber vor Zeiten hatte ich Linux-Firefox und Linux-Opera laufen, habe immer noch LXDE gelegentlich an und hatte auch mal googleearth installiert.
Das alles startet bei mir ohne weiteres Zutun, allerdings mit KDE3, wobei ich aber nicht glaube, dass hier automagismus von der Seite stattfindet.
Aber es ist (jedenfalls bei FreeBSD < 9) wichtig, nicht nur das Linux-Modul zu laden, sondern auch "in der fstab zu erklären wo es denn liegt". Und viele Linux-Anwendungen wollen einen PROC, am besten ihren eigenen (linuxproc). Gelegentlich hatte ich zwar auch schon mal nach dem (bei mir ebenfalls in der fstab erklärten) BSD-PROC gelinkt, doch das war irgendwas spezielles und ist sicher nicht zur Nachahmung empfohlen.

Ich habe grad kein FreeBSD laufen, um die Syntax exakt herauszufinden. Wenn du mich nicht verstehst, kannst du bei mir auf http://weispit.eu eine Mitschrift finden, wie ich FreeBSD 8.X auf einem Asus EEE eingesetzt hatte. Sieh da einfach mal in die fstab.
Vielleicht hilft das, wer weiß.
 
Aaargh.

Vergiss die ganzen Tipps die du hier bekommen hast. Es tut mir wirklich Leid, dass ich nicht schon früher reingeschaut habe.

1. Das eigentliche Problem:
Fedora 10 ist eine uralte Distri. Die glibc ist einfach zu alt für all die neuen Binaries.

Da die Linux Community nichts von stabile Schnittstellen hält, kannst du nicht einfach eine neue glibc in System ziehen. Es gibt keine Linux-Kompatibilität sondern nur eine Linux zu diesem Zeitpunkt Kompatibilität. Der Linux-Kernel ist meiner Meinung nach das größte Hindernis für Interoperabilität in der Open Source Welt.

Kurz gesagt du bist erst mal aufgeschmissen. Du hast nichts falsch gemacht.

2. linux_enable in der rc.conf ist vorzuziehen
Wenn man linux_load in die loader.conf einträgt wird das Modul schon vor dem Bootvorgang geladen. Zu diesem Zeitpunkt sind noch keine richtigen Treiber geladen, die Festplatten laufen in irgendeinem uralten BIOS Kompatibilitätsmodus (wahrscheinlich PIO4 oder so). Und Kernelmodule Laden dauert zu diesem Zeitpunkt um einen gefühlten Faktor 100 länger. Also nur Dinge die man zum Booten braucht in die loader.conf eintragen. Oder auf die Bootzeit pfeifen.
 
Aaargh.

Vergiss die ganzen Tipps die du hier bekommen hast. Es tut mir wirklich Leid, dass ich nicht schon früher reingeschaut habe.

1. Das eigentliche Problem:
Fedora 10 ist eine uralte Distri. Die glibc ist einfach zu alt für all die neuen Binaries.

Das ist so nicht ganz korrekt. Google-Earth setzt eine neuere GLIBC vorraus. Bei Eagle weiß ich es nicht. Jedoch sollte der Firefox einwandfrei laufen!

Hallo,

Code:
$ /usr/local/bin/linux-firefox
/usr/local/lib/linux-firefox/firefox: symbol lookup error: /usr/lib/libstdc++.so.6: undefined symbol: _ZNSt8messagesIcE2idE, version GLIBCXX_3.4
Silvio
 
ahh, jetzt verstehe ich (hoffentlich) erst, was du wolltest und was du damit meintest, dass es geht, wenn es FreeBSD ports gibt.
Du meintest gar nicht die vorhanden Ports, die aber auf Linux bauen? Die oft mal ein Linux im Namen haben. Die sollten nämlich schon funktionieren, auch mit der etwas ergrauten Fedora an Bord.

BTW: da las ich neulich noch irgendwo einen Artikel, wie man die durch eine andere (evtl neuere) Version auch ersetzen kann. Hatte mich aber nicht interessiert. Vielleicht kannst du was finden?
 
Falls du dein System noch nicht wieder neu aufgesetzt hast, tippe doch bitte einmal folgende Befehle ein:

Code:
strings /compat/linux/usr/lib/libstdc++.so.6 | grep _ZNSt8messagesIcE2idE

und

Code:
strings /compat/linux/usr/lib/libstdc++.so.6.0.16 | grep _ZNSt8messagesIcE2idE

Welche Ausgabe bekommst du?
 
Zurück
Oben