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

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

Beitragvon corpsman » 18. Feb 2018, 14:07 Compile nur wenn Root, warum wie richtig ? [gelöst]

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 18. Feb 2018, 16:28, insgesamt 1-mal geändert.
--
Just try it
corpsman
 
Beiträge: 1043
Registriert: 28. Feb 2009, 08:54
Wohnort: Stuttgart
OS, Lazarus, FPC: Kubuntu 14.04, Lazarus SVN Trunk, FPC 3.0 | 
CPU-Target: 32Bit
Nach oben

Beitragvon af0815 » 18. Feb 2018, 14:20 Re: Compile nur wenn Root, warum wie richtig ?

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 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).
af0815
 
Beiträge: 3455
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon corpsman » 18. Feb 2018, 14:27 Re: Compile nur wenn Root, warum wie richtig ?

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
corpsman
 
Beiträge: 1043
Registriert: 28. Feb 2009, 08:54
Wohnort: Stuttgart
OS, Lazarus, FPC: Kubuntu 14.04, Lazarus SVN Trunk, FPC 3.0 | 
CPU-Target: 32Bit
Nach oben

Beitragvon af0815 » 18. Feb 2018, 14:37 Re: Compile nur wenn Root, warum wie richtig ?

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).
af0815
 
Beiträge: 3455
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon corpsman » 18. Feb 2018, 14:49 Re: Compile nur wenn Root, warum wie richtig ?

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
corpsman
 
Beiträge: 1043
Registriert: 28. Feb 2009, 08:54
Wohnort: Stuttgart
OS, Lazarus, FPC: Kubuntu 14.04, Lazarus SVN Trunk, FPC 3.0 | 
CPU-Target: 32Bit
Nach oben

Beitragvon af0815 » 18. Feb 2018, 15:39 Re: Compile nur wenn Root, warum wie richtig ?

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).
af0815
 
Beiträge: 3455
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon corpsman » 18. Feb 2018, 16:30 Re: Compile nur wenn Root, warum wie richtig ? [gelöst]

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
corpsman
 
Beiträge: 1043
Registriert: 28. Feb 2009, 08:54
Wohnort: Stuttgart
OS, Lazarus, FPC: Kubuntu 14.04, Lazarus SVN Trunk, FPC 3.0 | 
CPU-Target: 32Bit
Nach oben

Beitragvon af0815 » 18. Feb 2018, 17:02 Re: Compile nur wenn Root, warum wie richtig ? [gelöst]

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).
af0815
 
Beiträge: 3455
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

• Themenende •

Zurück zu Linux



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried