Page 1 sur 1
comment faire un executable linux
Publié : lun. 16/mars/2009 8:35
par lapenduledargent
Bonjour à tous,
Voilà, je découvre PureBasic sous linux, et j'ai une question concernant les exécutables:
1/je fais une application toute simple qui lance une console.
2/ je la lance avec F5, ok pas de Pb.
3/ dans le menu complilateur, je clique sur créer un exécutable
4/ je choisi un dossier rapidement une fenêtre apparait et disparait
5/ un fichier a bien été créé dans le répertoire
Comment le lancer ?
J'ai essayé en cliquant dessus, mais rien
J'ai ouvert une console et tapé le nom du fichier mais ça va toujours pas
Comment faite vous ?
Merci et bonne journée
Pierre
Publié : lun. 16/mars/2009 11:08
par Anonyme
Quel type d'application ? console ? avec une interface évolué (GUI) ?
Ton exécutable à t'il les autorisation nécessaire pour s'exécuter ?
Met ton code ici entre les balise
Publié : lun. 16/mars/2009 13:54
par lapenduledargent
Bonjour Cpl.Bator,
Et bien voilà mon code et merci de m'aider :
Code : Tout sélectionner
OpenConsole()
#port = 0
fd = 0
fd = ReadFile(#port,"/dev/")
If fd
Print( "ok marche")
Delay(5000)
Else
OpenConsole()
Print("marche pas")
Delay(5000)
EndIf
Publié : lun. 16/mars/2009 14:24
par cha0s
déjà inutile d'ouvrir la console deux fois ^^'
Code : Tout sélectionner
OpenConsole()
#port = 0
fd = 0
fd = ReadFile(#port,"/dev/")
If fd
Print( "ok marche")
Delay(5000)
Else
Print("marche pas")
Delay(5000)
EndIf
ensuite une fois dans le terminal pas de problème
chaos@chaos:~$ cd Bureau/
chaos@chaos:~/Bureau$ ./test
ok marche
PS : tu utilise quelle distribution ?
RESOLU
Publié : lun. 16/mars/2009 20:23
par lapenduledargent
Bonsoir Chaos,
Ok, ça marche
Je ne savais pas que je devais utiliser ./ avant le nom du fichier
Merci et bonne soirée
Pierre
Publié : lun. 16/mars/2009 20:59
par flaith
lapenduledargent a écrit :Bonjour Cpl.Bator,
Et bien voilà mon code et merci de m'aider :
Code : Tout sélectionner
OpenConsole()
#port = 0
fd = 0
fd = ReadFile(#port,"/dev/")
If fd
Print( "ok marche")
Delay(5000)
Else
OpenConsole()
Print("marche pas")
Delay(5000)
EndIf
Bonsoir pierre,
j'en reviens sur ton code et sur ton soucis d'ouverture via openfile, j'ai testé ce code, que dit-il chez toi ?
Code : Tout sélectionner
#file_dev = 99
fd.i = 0
OpenConsole()
fd = OpenFile(#file_dev,"/dev/dsp")
If fd
PrintN("Lecture fichier dsp OK")
CloseFile(#file_dev)
EndIf
Print("Hit a key !"):Input()
CloseConsole()
Attention, dans ton code, tu fais readfile d'un répertoire ...

Publié : lun. 16/mars/2009 21:10
par djes
flaith a écrit :Attention, dans ton code, tu fais readfile d'un répertoire ...

Tiens, ça me dit quelque chose, on ne peut pas faire un readfile d'un répertoire sous Linux? Puisque les répertoires sont des sortes de fichiers...? J'avais lu ça quelque part, mais je me trompe peut-être

Publié : lun. 16/mars/2009 21:39
par flaith
djes a écrit :flaith a écrit :Attention, dans ton code, tu fais readfile d'un répertoire ...

Tiens, ça me dit quelque chose, on ne peut pas faire un readfile d'un répertoire sous Linux? Puisque les répertoires sont des sortes de fichiers...? J'avais lu ça quelque part, mais je me trompe peut-être


c'est bien vrai, mais je me suis mal expliqué en fait, puisqu'à la base la demande était d'ouvrir le port parallèle pour lire et écrire, il faut donc utiliser OpenFile, Readfile étant uniquement destiné qu'à lire les données et non les écrire d'ou la possibilité d'ouvrir le répertoire.
Bref tu as bien fait d'apporter ce détail

Publié : mar. 17/mars/2009 8:40
par lapenduledargent
Bonjour et merci à tous pour votre aide précieuse.
A peine inscrit sur le forum et déjà beaucoup d'aide
Ca fait plaisir lorsque l'on démarrage dans un projet de programmation.
Je me débrouille en php mais à présent, je souhaite commander le port // comme expliqué dans ce post
http://www.purebasic.fr/french/viewtopi ... 4977#94977
Merci flaith pour ton code, il fonctionne et j'ai ajouté ça après le IF :
Else
PrintN("Lecture impossible")
Alors avec ReadFile, pas de Pb mais avec OpenFile, j'ai une erreur.
C'est normal puisque je ne suis pas le propriétaire du fichier.
Le propriétaire est ROOT et le groupe est kmem
Qui est ce kmem sous ubuntu ?
En C, j'ai lu qu'il existe des possibilités de modifier momentanément les droit d'un fichier.
Sur mon autre poste, Chaos, me propose ça :
sous debian tu peut lancer ton application avec la commande "su monappli.out" ou "sudo monappli.out" sous ubuntu.
Ca à pas l'air de fonctionner que me proposez-vous SVP.
Merci et bonne journée
Pierre
Publié : mar. 17/mars/2009 9:21
par cha0s
.out n'est pas une commande c'est juste que sous windows on utilise .exe pour les exécutables et sous linux il fut un temps ou il était d'usage de mettre .out d'ailleurs le compilateur de PB sort un fichier .out l'osque l'on ne spécifie pas de nom d'exécutable.
donc tu doit faire
Publié : mar. 17/mars/2009 21:29
par flaith
lapenduledargent a écrit :...
Alors avec ReadFile, pas de Pb mais avec OpenFile, j'ai une erreur.
C'est normal puisque je ne suis pas le propriétaire du fichier.
Le propriétaire est ROOT et le groupe est kmem
quand je fais le test avec '/dev/dsp' c'est en root:audio chez moi, tu dois sûrement faire parti du groupe audio, ca a donné quoi lors du lancement du programme ? Sinon ajoute le groupe 'audio' a ton utilisateur
lapenduledargent a écrit :Qui est ce kmem sous ubuntu ?
lapenduledargent a écrit :En C, j'ai lu qu'il existe des possibilités de modifier momentanément les droit d'un fichier.
...
j'ai fait ca pour Linux, c'est les mêmes accès mais bas niveaux
http://www.purebasic.fr/french/viewtopic.php?t=9109, ca donne quelque chose chez toi ?
Publié : mer. 18/mars/2009 16:18
par lapenduledargent
Bonjour,
Concernant le code de Chaos, ça fonctionne. Je peux donc lancer mon appli en root.
Je viens de tester le code de Flaith :
J'ai donc fait 2 fichiers :
- io_linux.pbi
- test_io.pb
Mais j'ai une erreur, File not found ? à la ligne XIncludeFile "io_linux.pbi"
Je débute en purebasic et je comprends pas, le fichier à inclure est pourtant dans le même répertoire?
A bientôt
Pierre
Publié : mer. 18/mars/2009 18:00
par cha0s
attention sous linux "io_linux.pbi" et "Io_linux.pbi" sont deux fichier différent, vérifie bien la case.
Publié : mer. 18/mars/2009 19:07
par lapenduledargent
Bonsoir,
Non, c'est pas ça ?
Je vais compiler et essayer en root
Publié : mer. 18/mars/2009 21:35
par flaith

bizarre cette histoire, voici un 'ls' de mon repertoire, tu as quoi comme info par rapport à la ligne 'io_linux.pbi' et la ligne 'test_io.pb' un peu plus bas ?
