Compile nur wenn Root, warum wie richtig ? [gelöst]

Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Compile nur wenn Root, warum wie richtig ? [gelöst]

Beitrag von corpsman »

Servus,

ich setze gerade mein Buildsystem auf dem Raspi 3 neu auf.

Da ich mit PascalIO so meine Schwierigkeiten habe, nutze ich hwiringpi (installiert beschrieben wie hier : http://raspberrypiguide.de/howtos/raspb ... io-how-to/ )
Danach dann noch die h2wiringpi.pas geladen von hier ( https://github.com/laz2wiringpi/laz2wiringpi )

wenn ich nun die Testprojekt baue (welches bei h2wiringpi mit dabei ist) geht das mittels: lazbuild -B wiringPiapp.lpi

ich kann die App starten, ausführen alles wunderbar.

Mache ich das gleiche nun mit meiner App, welche die h2wiringpi.pas einbindet kriege ich folgenden Fehler :

Code: Alles auswählen

 
corpsman@raspberrypi:~/lazarus/projects/Basic $ lazbuild -B raspberry.lpi
Hint: (lazarus) Build Project: nothing to do.
Info: (lazarus) Execute Title="Compile Project, Target: raspberry"
Info: (lazarus) Working Directory="/home/corpsman/lazarus/projects/Basic/"
Info: (lazarus) Executable="/usr/bin/fpc"
Info: (lazarus) Param[0]="-B"
Info: (lazarus) Param[1]="-MObjFPC"
Info: (lazarus) Param[2]="-Scghi"
Info: (lazarus) Param[3]="-l"
Info: (lazarus) Param[4]="-vewnhibq"
Info: (lazarus) Param[5]="-Fi/home/corpsman/lazarus/projects/Basic/lib/arm"
Info: (lazarus) Param[6]="-Fu/home/corpsman/lazarus/projects/raspi_lib"
Info: (lazarus) Param[7]="-Fu/home/corpsman/lazarus/projects/test"
Info: (lazarus) Param[8]="-Fu/home/corpsman/lazarus/projects/Basic/"
Info: (lazarus) Param[9]="-FU/home/corpsman/lazarus/projects/Basic/lib/arm/"
Info: (lazarus) Param[10]="raspberry.lpr"
Hint: (11030) Start of reading config file /etc/fpc.cfg
Hint: (11031) End of reading config file /etc/fpc.cfg
Free Pascal Compiler version 3.0.0+dfsg-11+rpi1+deb9u1 [2017/07/27] for arm
Copyright (c) 1993-2015 by Florian Klaempfl and others
(1002) Target OS: Linux for ARMHF
(3104) Compiling raspberry.lpr
(3104) Compiling /home/corpsman/lazarus/projects/raspi_lib/h2wiringpi.pas
/home/corpsman/lazarus/projects/raspi_lib/h2wiringpi.pas(433,44) Hint: (5057) Local variable "obervolted" does not seem to be initialized
/home/corpsman/lazarus/projects/raspi_lib/h2wiringpi.pas(433,32) Hint: (5057) Local variable "maker" does not seem to be initialized
/home/corpsman/lazarus/projects/raspi_lib/h2wiringpi.pas(433,26) Hint: (5057) Local variable "mem" does not seem to be initialized
/home/corpsman/lazarus/projects/raspi_lib/h2wiringpi.pas(433,22) Hint: (5057) Local variable "rev" does not seem to be initialized
/home/corpsman/lazarus/projects/raspi_lib/h2wiringpi.pas(433,18) Hint: (5057) Local variable "modle" does not seem to be initialized
(9009) Assembling h2wiringpi
Fatal: (1024) I/O error: File not open
Error: /usr/bin/ppcarm returned an error exitcode
Error: (lazarus) Compile Project, Target: raspberry: stopped with exit code 256
ERROR: failed compiling of project /home/corpsman/lazarus/projects/Basic/raspberry.lpi
corpsman@raspberrypi:~/lazarus/projects/Basic $
 


Eine Lösung habe ich auch schon :

corpsman@raspberrypi:~/lazarus/projects/Basic $ sudo lazbuild -B raspberry.lpi

Wenn ich also Lazbuild via Root starte gehts, und meine Testapp funktioniert auch.

Ich würde nur ungern dauerhaft meinen Compile via Root machen, verstehe aber momentan nicht warum ich bei der Testapp kein Root brauche und bei meinem Projekt schon, daher kann ich das auch nicht abstellen.

Einziger offentsichtlicher Unterschied, meine Anwendung ist ne Consolenanwendung, die testapp nicht.

Kann mir einer von euch erklären, wo ich das richtige häckchen setzen muss, damit es auch ohne root geht ?
Zuletzt geändert von corpsman am So 18. Feb 2018, 16:28, insgesamt 1-mal geändert.
--
Just try it

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Compile nur wenn Root, warum wie richtig ?

Beitrag von af0815 »

Da ich am RasPi 3 ohne Probleme als User compilieren kann. Wie hast du Lazarus installiert ?
Du hast vermutlich ein Paket genommen (Error: /usr/bin/ppcarm returned an error exitcode).

Ich habe es mittels fpcupdeluxe (fpc&Lazarus) als normaler userr PI installiert, damit bleibt alles im Benutzerbereich und verlangt keinen Root bzw. sudo.

Code: Alles auswählen

Zuerst für die Repositiries und Zip/Unzipper
  $sudo apt-get install subversion zip unzip mc
Anschliessend Bibliotheken speziell für Freepascal/Lazarus
  $sudo apt-get install gdb libx11-dev libgtk2.0-dev libgdk-pixbuf2.0-dev libcairo2-dev libpango1.0-dev
Zusätzlich für das Kompileren und Debuggen wird folgendes benötigt
  $sudo apt-get install binutils git-core gdbserver
Erstellen des Basisverzeichnis data
  $mkdir /home/pi/data
 
Wichtig Swap ändern
Es lässt sich die Swap-Speichergröße ganz einfach in der Datei "/etc/dphys-swapfile" ändern. Statt der 100 einfach 1000 eintragen.
Sonst gibt es Probleme beim Erstellen von Lazarus mit vielen Paketen
  $sudo swapoff -a
  $sudo nano /etc/dphys-swapfile
  $sudo swapon -a
 
FPCUPDELUXE, statt v1.6.0k die aktuelle Version eintragen
  $mkdir /home/pi/data/ide
  $cd /home/pi/data/ide
  $mkdir fpcupdeluxe
  $cd fpcupdeluxe
  $wget https://github.com/newpascal/fpcupdelux ... v6hf-linux
  $chmod u+x fpcupdeluxe-armv6hf-linux
 


Installiert natürlich ins Verzeichnis /home/pi/data/ide mittels fpcupdeluxe

Andreas
Zuletzt geändert von af0815 am So 18. Feb 2018, 14:28, insgesamt 1-mal geändert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Compile nur wenn Root, warum wie richtig ?

Beitrag von corpsman »

lazarus ist installiert via

sudo aptitude install lazarus


Der witz ist ja dass die Testapp ohne sudo compiliert werden kann (und die hat auch die h2wiringpi.pas mit drin)
ich kann grundsätzlich also ohne root compilieren und sogar die h2wiringpi. nur eben meine Projekte nicht.
--
Just try it

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Compile nur wenn Root, warum wie richtig ?

Beitrag von af0815 »

Ich habe mir das kompilieren im Userbereich schon seit Jahren unter Linux (Debian, Ubuntu) angewöhnt, da ich damit immer volle Kontrolle über den Compiler habe und auch nicht von den Mätzchen (sorry aber das kommt einem schon mal so vor) der Pakethersteller abhängig bin. Seit fpcup ist das natürlich noch viel einfacher. Zusätzlich kann ich mir aussuchen welchen compiler ich verwenden will. Ich habe normalerweise immer stable/stable, stable/trunk und trunk/trunk (fpc/Lazarus) auf der Platte nebenbei lagernd. Am Raspi verständlicherweise nicht :-)

Andreas

BTW: Ein einfaches Ping am RasPi benötigt schon ein paar intelligente Zeilen mehr, damit es auch ohne root funktioniert

Code: Alles auswählen

chmod 0755 /home/pi/data/testping
setcap cap_net_raw+ep /home/pi/data/testping


sonst geht es nicht ohne sudo. Das sind halt Kleinigkeiten die ich auch erst mühsam mir zusammengetragen habe.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Compile nur wenn Root, warum wie richtig ?

Beitrag von corpsman »

Ich verstehe deine Antwort leider nicht, und anscheinend kann ich auch keine Dateianhänge mehr mit geben, deswegen lade das Beispiel bitte unter www.Corpsman.de/Beispiele.zip

Wenn du das auspackst, siehst du 2 Projekte.

Beide kann ich kompilieren Ausführen und machen auch was sie sollen, doch bei dem einen gehts nur, wenn ich als Root compiliere. Zum Ausführen muss ich in beiden Fällen Root sein.
--
Just try it

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Compile nur wenn Root, warum wie richtig ?

Beitrag von af0815 »

Kannst du in das Beispiele.zip die benötigte wiringPi.o auch noch hinzufügen.

Danke

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Compile nur wenn Root, warum wie richtig ? [gelöst]

Beitrag von corpsman »

hehe, du bist klasse,

die wiringpi.o darf gar nicht mehr in den Abhängigkeiten drin sein. Nachdem ich Sichergestellt hatte, dass sie auf meinem Testsystem nicht mehr existiert, compiliert er nun alle Projekte wieder ohne Root rechte durch.

danke fürs rubberducking
--
Just try it

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Compile nur wenn Root, warum wie richtig ? [gelöst]

Beitrag von af0815 »

Ich hätte dann noch auf meinem RasPi nach folgenden geprüft, besonders wegen der Rootrechte beim ausführen

Code: Alles auswählen

 
*) sudo usermod -aG gpio pi
falls noch nicht drinnen
 
*) sudo chmod 222 /sys/class/gpio/export /sys/class/gpio/unexport
 
*) CAP_SYS_RAWIO   
Erlaubt ioperm/iopl Zugriff
 

Das sind Schnippsel die mir bei solche Problemen hilfreich sein könnten.

:-) quietsch :idea:

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten