Ich versuche, eine gemeinsam genutzte Bibliothek auf einem Raspberry Pi (Modell 3B) mit Lazarus zu verwenden. Nach einigen verwirrenden Sachen fand ich heraus, dass meine ursprüngliche Bibliothek nicht richtig funktionierte, also wechselte ich zu einer sehr einfachen Bibliothek, die this Beispiel verwendete.Erstellen Sie eine gemeinsame Bibliothek auf einem Raspberry mit Lazarus
Aber auch diese einfache Bibliothek kann nicht richtig kompiliert werden. Wenn ich versuche, die Bibliothek in einem anderen lazarus Projekt zu öffnen, es gibt mir den Fehler:
<libName>: cannot open shared object file: No such file or directory
Nach einigen Recherchen habe ich folgende Diagnose fand ich laufen konnte. Die Datei und LDD-Befehl in der Kompilierung Bibliothek:
$ file ./libname.so gibt:
./libname.so: ELF 32-bit LSB shared object, ARM, EABI5 verion 1 (SYSV), dynamically linked, not stripped
$ ldd ./libname.so
not a dynamic executable
ich für ähnlich gelagerte Fälle gesucht und festgestellt, dass andere dieses Problem hatten, wenn sie versuchten, Bibliotheken für eine andere Plattform/Architektur zu kompilieren. Ich habe das Projekt> Projektoptionen> Compileroptionen> Zielplattform bereits auf OS: = Linux und Target CPU family: arm gesetzt.
Das System verwende ich ($ uname -a verwenden):
Linux raspberrypi 4.4.13-V7+ #894 SMP Mon Jun 13 13:13:27 BST 2016 armv7l GNU/Linux
mit Distro: Raspbian GNU/Linux 8.0 (jessie)
Lazarus Version: 1.2.4 + dfsg2-1 FPC-Version: 2.6.4 arm-linux-gtk2
An diesem Punkt bin ich nicht sicher, was falsch ist und warum diese Bibliothek nicht funktioniert. Ich kann sehr wenig Informationen zu diesem Problem finden (auf der Aspberry-Plattform und Lazarus verwenden) Irgendwelche Vorschläge, was ich versuchen könnte, damit es funktioniert, kompilieren Sie es anders oder machen Sie mehr Diagnosen?
Und wenn Sie LD_LIBRARY_PATH =. Tun, was passiert dann? Oder versuchen Sie, die Einheit "initc" in Ihre Bibliothek zu importieren. –
Versuchte beide, tatsächlich löste die initc es, aber resultierte in einem anderen Problem. Habe jedoch eine Lösung gefunden, die ich posten werde. Danke trotzdem! – Steven