Executable bit setzen bei cross compile WINDOWS -> Raspberry

Antworten
ATILIUS_REGULUS
Beiträge: 57
Registriert: Mi 20. Feb 2013, 10:06
OS, Lazarus, FPC: KUBUNTU 14.04 (fpc 3.3.1) / Raspbian (fpc 3.3.1)
CPU-Target: x86, x64, ARM
Kontaktdaten:

Executable bit setzen bei cross compile WINDOWS -> Raspberry

Beitrag von ATILIUS_REGULUS »

Habe es geschafft, unter WINDOWS 7 ein Crosscompile eines einfachen Lazarusprogrammes für Raspberry Pi zu erzeugen.
Dadurch kann ich die IDE unter WINDOWS nutzen, was um einiges schneller als unter Raspberry ist, außerdem habe ich unter WINDOWS einen 4K Monitor, in welchem das Editieren wesentlich übersichtlicher als unter Raspberry ist.
Da der Raspberry per Samba in WINDOWS eingebunden ist, ist das Projektverzeichnis und die ausführbare Datei direkt auf dem Raspberry.
Nur eine Sache stört mich etwas: Die Datei hat das executable bit nicht gesetzt. Dieses muß ich bislang immer manuell auf dem Raspberry nach jedem Compilieren nachsetzen. :cry:
Gibt es eine Möglichkeit, dieses Bit beim Crosscompile automatisch setzen zu lassen, zum Beispiel durch eine Linkeroption?

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Executable bit setzen bei cross compile WINDOWS -> Raspb

Beitrag von Socke »

ATILIUS_REGULUS hat geschrieben:Da der Raspberry per Samba in WINDOWS eingebunden ist, ist das Projektverzeichnis und die ausführbare Datei direkt auf dem Raspberry.
Nur eine Sache stört mich etwas: Die Datei hat das executable bit nicht gesetzt. Dieses muß ich bislang immer manuell auf dem Raspberry nach jedem Compilieren nachsetzen. :cry:
Gibt es eine Möglichkeit, dieses Bit beim Crosscompile automatisch setzen zu lassen, zum Beispiel durch eine Linkeroption?

Als erstes muss Samba die Windows-Dateieigenschaften auf die Unix-Attribute übernehmen: https://docstore.mik.ua/orelly/samba/ch05_03.html
Zweitens stelltst du in den Projektoptionen ein, dass nach dem Compilieren unter Windows das Archive-Bit gesetzt werden soll, indem das Batch-Tool attrib aufgerufen wird: https://technet.microsoft.com/en-us/lib ... 90868.aspx
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Executable bit setzen bei cross compile WINDOWS -> Raspb

Beitrag von mse »

Hinweis: Da du auch mit MSEide+MSEgui arbeitest, für Linux gibt es ein Projekt-Template zum Cross-Kompilieren und remote-Debuggen Linux32 -> Raspberry Pi.
Aus README.TXT:

Code: Alles auswählen

 
Crosscompiling and remote debugging i386-linux -> arm-linux
***********************************************************
For Raspberry Pi:
- Establish a ssh login without password (public key authentication).
 
- On the i386-linux host install the scp program
- download and extract
  https://sourceforge.net/projects/mseide ... 3_a.tar.gz
  to <your crossfpc directory>.
 
- Start MSEide, in 'Settings'-'Configure MSEide'-'Global Macros' add:
 
Name            Value
 
CROSSMSEDIR     <MSEide+MSEgui directory>
CROSSFPCDIR     <your crossfpc directory>
CROSSFPCVERSION 3.0.3
HOSTIP          <the IP of the host>
REMOTEIP        <the IP of the remote target>
REMOTEPORT      <the remote port, ex: 2345>
REMOTEUSER      pi
 
- 'Project'-'New'-'From Template', select "crossarmdefault.prj" or
  "crossarmconsole.prj".
- Create the new project.
- 'Project'-'Options'-'Macros', set the TARGETPROJECTDIR value to the project
  path in remote target, ex: "/home/pi/proj/testcase".
- Check the TARGETENV macro.
- If your application needs additional libraries copy them from Raspberry Pi
  /lib/arm-linux-gnueabihf or /usr/lib/arm-linux-gnueabihf to
  <your crossfpc directory>/eabihf/lib
 
Press F9 and hope the best. ;-)
If there is a debugger timeout at startup enlarge the
'Project'-'Options'-'Target'-'Wait before connect' value.
 

ATILIUS_REGULUS
Beiträge: 57
Registriert: Mi 20. Feb 2013, 10:06
OS, Lazarus, FPC: KUBUNTU 14.04 (fpc 3.3.1) / Raspbian (fpc 3.3.1)
CPU-Target: x86, x64, ARM
Kontaktdaten:

Re: Executable bit setzen bei cross compile WINDOWS -> Raspb

Beitrag von ATILIUS_REGULUS »

Socke hat geschrieben:Zweitens stelltst du in den Projektoptionen ein, dass nach dem Compilieren unter Windows das Archive-Bit gesetzt werden soll, indem das Batch-Tool attrib aufgerufen wird: https://technet.microsoft.com/en-us/lib ... 90868.aspx

Danke für den Hinweis, das hatte ich gesucht.
Daß man unter WINDOWS 7 das Archive Bit als Executable Bit nutzt, erinnert mich ein bißchen an die alten DOS und CPM Zeiten, da wurden einzelne Bits auch oftmals anders genutzt als ursprünglich gedacht. :lol:


mse hat geschrieben:Hinweis: Da du auch mit MSEide+MSEgui arbeitest, für Linux gibt es ein Projekt-Template zum Cross-Kompilieren und remote-Debuggen Linux32 -> Raspberry Pi.

Danke, werde ich mir ansehen.

----

Leider habe ich aufgrund des vielen Experimentierens beim Cross Compiling es irgendwie geschafft, daß sich die Konfiguration inzwischen so verstellt hat, daß der Linker jetzt dauernd Fehler erzeugt :evil: :evil: :evil: :
"... Using dlopen in statically linked applications requires at runtime the shared libraries from the glibc version used for linking"
"... libpcre.so.1: error adding symbols: DSO missing from command linelibpcre.so.1: error adding symbols: DSO missing from command line"
Vorher kamen diese Meldungen nicht.

Weiß jemand, wie ich die Fehler wieder weg bekomme? :oops:
Zuletzt geändert von ATILIUS_REGULUS am Do 11. Jan 2018, 15:39, insgesamt 1-mal geändert.

ATILIUS_REGULUS
Beiträge: 57
Registriert: Mi 20. Feb 2013, 10:06
OS, Lazarus, FPC: KUBUNTU 14.04 (fpc 3.3.1) / Raspbian (fpc 3.3.1)
CPU-Target: x86, x64, ARM
Kontaktdaten:

Re: Executable bit setzen bei cross compile WINDOWS -> Raspb

Beitrag von ATILIUS_REGULUS »

ATILIUS_REGULUS hat geschrieben:Leider habe ich aufgrund des vielen Experimentierens beim Cross Compiling es irgendwie geschafft, daß sich die Konfiguration inzwischen so verstellt hat, daß der Linker jetzt dauernd Fehler erzeugt :evil: :evil: :evil: :

Hab den Fehler gefunden: Hatte in der smb.conf des Raspberry den Path auf / gestellt, um an alle Dateien heranzukommen, dadurch gab es offensichtlich Probleme mit den Rechten, habe den Pfad jetzt wieder auf /home/pi gesetzt und alles geht wieder... :D

So, jetzt geht es an das Archive/Executable Bit... :twisted:

ATILIUS_REGULUS
Beiträge: 57
Registriert: Mi 20. Feb 2013, 10:06
OS, Lazarus, FPC: KUBUNTU 14.04 (fpc 3.3.1) / Raspbian (fpc 3.3.1)
CPU-Target: x86, x64, ARM
Kontaktdaten:

Re: Executable bit setzen bei cross compile WINDOWS -> Raspb

Beitrag von ATILIUS_REGULUS »

Noch ein Hinweis, falls jemand anders das gleiche Problem mit den Executable-Bit hat:
Mein WINDOWS 7 läuft als Gast unter KUBUNTU 14.04 64 Bit. Das Samba-Laufwerk des Raspberry hatte ich zuerst als "gemeinsamen Order" der Virtualbox eingebunden, wobei ich das Samba-Laufwerk unter KUBUNTU normal gemountet hatte.
Hierbei kam es zu folgender Eingentümlichkeit: Man konnte nachdem man die smb.conf entsprechend mit "map archive = yes" eingestellt hatte, wie von Socke angegeben, zwar das Archive-Bit löschen, aber nicht mehr setzen. Unter KUBUNTU konnte das Executive-Bit auf dem Samba-Laufwerk gesetzt und gelöscht werden.
Danach habe ich das Samba-Laufwerk als normales Netzlaufwerk unter WINDOWS 7 eingebunden, und da ging es.
Nochmals danke an Socke, jetzt kann man die Datei im Raspberry direkt starten. :)

Also: Wenn jemand auf einem Samba-Laufwerk von Windows in einer VB aus mittels attrib das Executable-Bit setzen möchte, muß das Laufwerk als normales Netzlaufwerk und nicht als VB-Ordner eingebunden werden.

Antworten