Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Letzte Frage: die Verzeichnisse unterhalb von /home/olaf/arm_develop/projects/eibd_dns323 kopiere ich dann nach /opt/* oder lieber nach /usr/*? Je nachdem, wo's mir besser gefällt?
Du musst .../lib/libpthsem*so* in ein vom dyn. Linker durchsuchtes Verzeichnis kopieren (wie /lib bzw. /usr/lib).
Vom Rest kannst du in ein Verzeichnis deiner Wahl kopieren, was du brauchst/willst. Die Position ist egal. echo $PATH am Target gibt eine Liste von Verzeichnisen aus, wo Programme wie eibd auch ohne Angabe vom Pfad gefunden werden.
Das war der Tip, der fehlte. Ich hab den eibd tatsächlich kompiliert bekommen. Ich schreibs nochmal zusammen und poste es hier. Wenn ich dann noch ein ipk baue, kriegst du ne Kopie... (Jetzt muss ich nur noch einen ebenso hilfsbereiten Menschen mit ipk-Kenntnissen finden... ;-))
Letzte Frage: die Verzeichnisse unterhalb von /home/olaf/arm_develop/projects/eibd_dns323 kopiere ich dann nach /opt/* oder lieber nach /usr/*? Je nachdem, wo's mir besser gefällt?
Extrem herzlichen Dank für die ganze Hilfe! :-)
VG
ram
jedenfalls bricht LDFLAGS="-L/home/olaf/arm_develop/projects/eibd_dns323/lib/" ./configure --host=arm-linux-uclibc --enable-onlyeibd --with-pth="/home/olaf/arm_develop/projects/eibd_dns323/" --without-pth-test --enable-eibnetip --enable-eibnetiptunnel --enable-eibnetipserver --prefix=/home/olaf/arm_develop/projects/eibd_dns323
mit checking argp.h usability... no
checking argp.h presence... no
checking for argp.h... no
configure: error: argp_parse not found
ab.
wobei /home/olaf/arm_develop/projects/eibd_dns323 das --prefix für die anderen configures war. Daher sind dort sowohl argp.h in include als auch libargp.a in lib vorhanden...
Ich würde CPPFLAGS="-I/home/olaf/arm_develop/projects/eibd_dns323/include/"
in die Zeile vor LDFLAGS stellen (jeweils durch ein Blank getrennt).
nachdem ich mich so langsam rangetastet habe, scheitere ich vermutlich an der Einbindung von argp...
jedenfalls bricht LDFLAGS="-L/home/olaf/arm_develop/projects/eibd_dns323/lib/" ./configure --host=arm-linux-uclibc --enable-onlyeibd --with-pth="/home/olaf/arm_develop/projects/eibd_dns323/" --without-pth-test --enable-eibnetip --enable-eibnetiptunnel --enable-eibnetipserver --prefix=/home/olaf/arm_develop/projects/eibd_dns323
mit checking argp.h usability... no
checking argp.h presence... no
checking for argp.h... no
configure: error: argp_parse not found
ab.
wobei /home/olaf/arm_develop/projects/eibd_dns323 das --prefix für die anderen configures war. Daher sind dort sowohl argp.h in include als auch libargp.a in lib vorhanden...
pthsem hab ich kompiliert bekommen, allerdings scheint der Teil für den eibd mindestens einen Fehler zu enthalten
die Option --enably-onlyeibd müsste doch --enable-onlyeibd heissen, oder?
Und ich bin mir nicht sicher, ob in der configure-Zeile nicht ein <Return> fehlt, zumindest verwirrt mich die Angabe von LDFLAGS vor dem Aufruf von ./configure...
Des gehört schon so. So übernimmt configure den Inhalt von LDFLAGs
Ein grosses Problem (für mich) ist aber die Auswahl der richtigen Verzeichnisse. Du schreibst da bei den Parametern, man solle /path/to/empty/dir angeben. Für pthsem habe ich mir schon gedacht, dass mit --prefix dort das Zielverzeichnis für die zu erstellenenden Dateien gemeint ist (auf das später beim eibd-configure verwiesen wird)
Aber welches /path/to/empty/dir soll ich bei LDFLAGS angeben? Wo doch LDFLAGS eigentlich auf ein Verzeichnis mit libs verweisen soll (laut --help)
Im Prinzip ersetzt man den String /path/to/empty/dir durch einen Verzeichnisnamen eigener Wahl, wo (bei einen Anfänger) nichts anderes stehen sollte. Bei LDFLAGS wird auf das Unterverzeichnis lib darin verwiesen.
Welches ist den eigentlich mein Target? Ich hab pthsem mit --host=arm compiliert, müsste ich da nicht besser --host=arm-uclib angeben?
Nimm den Namen des Cross-compilers (XXX-gcc) und tue das -gcc weg, dann hast du den Targetnamen.
configure ergänzt fehlende Namensteile; das Ergebniss sieht man im Output davon. Ganz wichtig ist die Angabe der Architektur (arm, mips, usw.), da sonst für den PC compiliert wird.
Wenn am nicht mehrere Cross-Compiling Umgebungen für eine Architektur installiert hat, kann man sich oft die weiteren Angaben sparen.
PS: Mein HOWTO steht in einen Wiki, wo jeder registrierte SF.net User Änderungen machen darf.
so, nun hab ich eine funktionierende Toolchain auf einer Ubuntu-VM gebastelt (ging natürlich auch nicht ohne ein paar Detailänderungen) und ich hab mich dann mit dem BCUSDK und deiner Cross-Compiling Anleitung beschäftigt...
pthsem hab ich kompiliert bekommen, allerdings scheint der Teil für den eibd mindestens einen Fehler zu enthalten
die Option --enably-onlyeibd müsste doch --enable-onlyeibd heissen, oder?
Und ich bin mir nicht sicher, ob in der configure-Zeile nicht ein <Return> fehlt, zumindest verwirrt mich die Angabe von LDFLAGS vor dem Aufruf von ./configure...
Ein grosses Problem (für mich) ist aber die Auswahl der richtigen Verzeichnisse. Du schreibst da bei den Parametern, man solle /path/to/empty/dir angeben. Für pthsem habe ich mir schon gedacht, dass mit --prefix dort das Zielverzeichnis für die zu erstellenenden Dateien gemeint ist (auf das später beim eibd-configure verwiesen wird)
Aber welches /path/to/empty/dir soll ich bei LDFLAGS angeben? Wo doch LDFLAGS eigentlich auf ein Verzeichnis mit libs verweisen soll (laut --help)
Welches ist den eigentlich mein Target? Ich hab pthsem mit --host=arm compiliert, müsste ich da nicht besser --host=arm-uclib angeben?
Kannst Du mir da nochmal aufs Rad helfen? Thx
Cu, ram
Wie's aussieht, weisen alle arm-basierten eibd/pthsem-ipk-Pakete von Index of /linknx den gleichen ldd-Output auf. Da scheint es keinen Kandidaten zu geben, der aussichtsreicher ausschaut... hab sie alle durchgetestet.
Theoretisch müßte dieser EIBD nicht gegen 2 libc gelinkt sein, sondern die zweite libc kann indirekt über eine Systembibliothek (zB libgcc) hineingeholt werden:
Wenn ich mich nicht irre, müßte der Webmaster von den oben genannten Link auch schon im Forum gewesen sein (jef2000???). Ich würde einmal beim Ersteller der Packete nachfragen.
Ich würde auch zustimmen, das die Architektur passt.
Das ist ja schonmal was... :-D
Ich würde aufpassen, da der EIBD anscheinend gegen 2 libc und 2 libm gelinkt wurde. Das kann eventuell zu unerwarteten Verhaltensweisen führen. Ausserdem braucht es unnötig Platz.
Wie's aussieht, weisen alle arm-basierten eibd/pthsem-ipk-Pakete von http://ouaye.net/linknx/ den gleichen ldd-Output auf. Da scheint es keinen Kandidaten zu geben, der aussichtsreicher ausschaut... hab sie alle durchgetestet.
Wenn Du keine weiteren Tricks bzgl. der libraries hast, werde ich mich mal daran machen, das Ding für mein NAS zu kompilieren.
Es bleibt spannend.
root@dlink-6426C2:~# ldd /opt/bin/eibd
ldd: can't open cache '/ffp/etc/ld.so.cache'
checking sub-depends for '/opt/lib/libpthsem.so.20'
checking sub-depends for 'not found'
checking sub-depends for 'not found'
checking sub-depends for '/ffp/lib/libstdc++.so.6'
checking sub-depends for 'not found'
checking sub-depends for '/lib/libgcc_s.so.1'
checking sub-depends for 'not found'
checking sub-depends for '/ffp/lib/libm.so.0'
checking sub-depends for '/ffp/lib/libc.so.0'
libpthsem.so.20 => /opt/lib/libpthsem.so.20 (0x00000000)
libdl.so.2 => not found (0x00000000)
libnsl.so.1 => not found (0x00000000)
libstdc++.so.6 => /ffp/lib/libstdc++.so.6 (0x00000000)
libm.so.6 => not found (0x00000000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00000000)
libc.so.6 => not found (0x00000000)
libm.so.0 => /ffp/lib/libm.so.0 (0x00000000)
libc.so.0 => /ffp/lib/libc.so.0 (0x00000000)
/ffp/lib/ld-uClibc.so.0 => /ffp/lib/ld-uClibc.so.0 (0x00000000)
Ich schätze mal, dass es an fehlenden libraries liegt. Hast du einen Tip, in welchen ipks (optware) die enthalten sind?
Edit:
Code:
ln -s libm-0.9.29.so libm.so.6
(für die anderen analog) hat leider nix gebracht, obwohl ldd dann freundlicher aussieht.
mit
Code:
ipkg whatprovides libm.so.6
lässt sich auch nichts ermitteln, das hat mein ipkg wohl nicht ausreichend implementiert... *grrr* oder ich mach was falsch *doppel-grrr*
Ich würde auch zustimmen, das die Architektur passt.
libm.so.6 sieht nach glibc (oder einer Variante wie eglibc davon) aus. libm.so.0 wird wahrscheinlich die uClibc sein.
Ich würde aufpassen, da der EIBD anscheinend gegen 2 libc und 2 libm gelinkt wurde. Das kann eventuell zu unerwarteten Verhaltensweisen führen. Ausserdem braucht es unnötig Platz.
EIBD ist eigenlich nur als Nebensache entstanden. Immerhin heisst das Project "BCU SDK with eibd" ;-)
okay, okay, ich hab öfter Tomaten auf den Augen... ;-)
Das hilft weiter. Also entweder ist der EIBD inkompatibel zu deinen System (was sagt
Code:
file /opt/bin/eibd
uname -a
)
ergibt:
Code:
/opt/bin/eibd: ELF 32-bit LSB executable, ARM, version 1, for GNU/Linux 2.4.3, dynamically linked (uses shared libs), stripped
bzw:
Linux dlink-6426C2 2.6.12.6-arm1 #31 Thu Mar 26 18:20:41 CST 2009 armv5tejl unknown
Für das bischen, was ich mich traue daraus abzuleiten, finde ich "ARM, version 1" entspricht "2.6.12.6-arm1"?
oder es fehlt eine Bibliothek:
Code:
ldd /opt/bin/eibd
ergibt:
Code:
root@dlink-6426C2:~# ldd /opt/bin/eibd
ldd: can't open cache '/ffp/etc/ld.so.cache'
checking sub-depends for '/opt/lib/libpthsem.so.20'
checking sub-depends for 'not found'
checking sub-depends for 'not found'
checking sub-depends for '/ffp/lib/libstdc++.so.6'
checking sub-depends for 'not found'
checking sub-depends for '/lib/libgcc_s.so.1'
checking sub-depends for 'not found'
checking sub-depends for '/ffp/lib/libm.so.0'
checking sub-depends for '/ffp/lib/libc.so.0'
libpthsem.so.20 => /opt/lib/libpthsem.so.20 (0x00000000)
libdl.so.2 => not found (0x00000000)
libnsl.so.1 => not found (0x00000000)
libstdc++.so.6 => /ffp/lib/libstdc++.so.6 (0x00000000)
libm.so.6 => not found (0x00000000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00000000)
libc.so.6 => not found (0x00000000)
libm.so.0 => /ffp/lib/libm.so.0 (0x00000000)
libc.so.0 => /ffp/lib/libc.so.0 (0x00000000)
/ffp/lib/ld-uClibc.so.0 => /ffp/lib/ld-uClibc.so.0 (0x00000000)
Ich schätze mal, dass es an fehlenden libraries liegt. Hast du einen Tip, in welchen ipks (optware) die enthalten sind?
Edit:
Code:
ln -s libm-0.9.29.so libm.so.6
(für die anderen analog) hat leider nix gebracht, obwohl ldd dann freundlicher aussieht.
mit
Code:
ipkg whatprovides libm.so.6
lässt sich auch nichts ermitteln, das hat mein ipkg wohl nicht ausreichend implementiert... *grrr* oder ich mach was falsch *doppel-grrr*
Edit2: Hab irgendwo gelesen, dass die DNS323 Firmware auf uclibc aufbaut. Ist das die Richtung, aus der eine Lösung winken könnte?
PS: Auf soviel Einzelfallbehandlung hatte ich kaum zu hoffen gewagt. Wenn ich das hinkriege, schreib ich was zusammen, dass du den Anwendungsfall "DNS323" mit ins wiki aufnehmen kannst... Danke schonmal
root@xxxx:~# ls /opt/bin/ei*
/opt/bin/eibd /opt/bin/eibnetdescribe /opt/bin/eibnetsearch
root@xxxx:~# strace /opt/bin/eibd
execve("/opt/bin/eibd", ["/opt/bin/eibd"], [/* 19 vars */]) = -1 ENOENT (No such file or directory)
Das hilft weiter. Also entweder ist der EIBD inkompatibel zu deinen System (was sagt
Mir war nicht klar, dass der eibd im SDK enthalten ist...
Ja, dafür dass der eibd für die meisten das wichtigste Programm ist, ist der gut versteckt. Hatte mich damals auch etwas Zeit und Verständnis gekostet...
root@xxxx:~# ls /opt/bin/ei*
/opt/bin/eibd /opt/bin/eibnetdescribe /opt/bin/eibnetsearch
root@xxxx:~# strace /opt/bin/eibd
execve("/opt/bin/eibd", ["/opt/bin/eibd"], [/* 19 vars */]) = -1 ENOENT (No such file or directory)
write(2, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory
) = 40
exit(1) = ?
die sog. Toolchain baue ich auf einer normalen (virtuellen) linux Installation und dort compile ich auch? Oder passiert sowas auf der DNS selbst?
Man kann im Prinzip beides machen. Für die zweite Lösung muss das Target (bei dir DNS) Leistungsfähigier sein: Es braucht mehr Speicherplatz, da GCC & Co installiert werden müssen. Dafür ist die Installation einfacher.
wenn ich irgendwas was kompiliert bekommen habe, muss ich mir dann noch ein .ipk für optware (ipkg) bauen?
Nein. Man kann die nötigen Teile einfach auf Target kopieren. Ein Packet vereinfacht nur die Installation, es muss sich nur einer die Mühe machen, das ipkg einmal zu erstellen.
Gibts einen einfacheren Weg? Ich habe schon einige ipk-Pakete (für ARM devices) ausprobiert, aber jedesmal sagt mir eibd: No such file or directory. /opt/bin/eibd existiert aber und liegt im Pfad...
das mit dem FT12 hat nicht funktioniert (ich habe die Verbindung zwischen der internent RS232 der Fritzbox und einer FT12 nicht hinbekommen), habe mir ein IP Schnittstelle gekauft, das eibd habe ich aber für FT12 kompiliert,
brauchst Du es?
Gruß
Kobza
Hallo Kobza,
vielen Dank für die Info, aber ich brauche die für FT12 kompilierte Version dann auch nicht. Ich werde wohl auch den Weg über Siemens EIB/IP Schnittstelle nehmen.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Einen Kommentar schreiben: