|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Inactif
Inscription : mars 2006 Messages : 852 ![]() |
Hi all,
je programmais mes cgi en C, et je décide de migrer les codes vers Ada. Seulement, sur mon serveur d'herbergement, je n'ai évidement pas de compte root (et inutile de proposer aux admins de l'installer, ils sont sourds même pour les questions normales... Cegetel, que je vous déconseille fortement). Donc j'ai télécharger une archive d'installation, que j'ai décompressé sous un repertoire auquel j'ai un acces lecture/écriture. J'ai écrit un petit programme hello-world en Ada. J'essai de le compiler avec gnat make... ko, il ne trouve pas gnatmake, et je ne sais pas comment changer la variable path. Pas grave, j'invoque directement ./gnatmake, ko aussi. J'essai d'invoquer directement ./gnat1... ko, il me me dit qu'il ne trouve pas system.ads. Pas grave, je copie system.ads dans le repertoire courant. Et là maintenant, il ma dit que Text_IO n'est pas un package standard. Je fais comment maintenant ? |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 990 ![]() |
Bonjour,
Pourrais-tu indiquer quelle archive tu as téléchargé et installé ? Pour changer la variable PATH, c'est simple il suffit d'exécuter PATH=$PATH:$HOME"/bin" par exemple. En fait il n'y a pas d'opérateur de concaténation, il suffit juste de tout coller à la suite. Et pour finir je crois que ta question serait mieux dans le forum Linux.
__________________
Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter. |
|
|
00
|
|
|
#3 |
|
Inactif
Inscription : mars 2006 Messages : 852 ![]() |
Merci Celelibi
Je vais voir comme ça pour path, mais j'ai l'impression que l'environnement utilisé pour l'execution des programme, n'est pas le même que pour le shell Mais je ne comprens pas, tu me dis que je dois poster dans le forum Linux... mais c'est pas le forum Linux ici ? (Linux & developement pour Linux). En fait, avec gcc, il y a toujours un truc du genre xxx1... (gcc1, ou cpp1), et ici c'est gnat1. Ce truc a l'air fondemental, et il ne sait pas ou trouver les librairie stantard. Mais si j'essai de le lancer avec -h ou --help, ou sans rien, il refuse desespérement de me donner la moindre aide. Il faudrait en fait que je sache si on peut utiliser une variable d'environnement, ou si on peut lui donner le chemin d'un fichier de configuration quelqu'onque. L'archive que j'ai téléchargé, c'est celle de Slackware (j'avais éssayé avec un archive rpm, mais sans succé). J'aime mieux les archives slackare, elle sont plus simple, plus accessible et plus légère, et elle sont déjà organisées en repertoire. Merci encore pour ta réponse |
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 990 ![]() |
En fait tu avais posté dans "Autres Langages et Outils", mais un modo l'a déplacé au bon endroit.
Pour que la modification de la variable $PATH soit prise en compte par les futures applications lancés il faut faire :Tu peux aussi mettre la modification de la variable PATH ainsi que l'export dans ton fichier .bashrc (ou .bash_profile) pour que cette modification reste au prochain redémarrage du shell. Sinon tu peux aussi ajouter/modifier une variable d'environnement pour un seul programme de la façon suivante : Code :
MAVAR=trucmachin leprogramme --argument Tu sais, les packages rpm ou tgz (ceux de slackware) sont faits pour être installés sur le système tout entier en tant que root, et pas pour une "installation individuelle". Je pense que tu devrais plutôt chercher à compiler gnat à partir des sources, comme ça tu pourras choisir le répertoire d'installation ; ça se fait en général avec la commnde ./configure --prefix=$HOME D'ailleurs je me demande pourquoi tu veux installer un compilateur. En général on cherche plus à mettre des programme déjà compilé plutôt que des compilateurs. :p
__________________
Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter. |
|
|
00
|
|
|
#5 |
|
Inactif
Inscription : mars 2006 Messages : 852 ![]() |
Hello,
je comprends que tu me trouve bizzare de vouloir installer un compilateur,parce que c'est sure que c'est les binaires qui m'interesse. Si je fait comme ça, c'est parce que je suis sous Windows, et que je ne peux donc pas importé des exe Windows sur un serveur sous Linux et comme mon pc est trop petit, je ne peux pas installer linux sur mon pc, et donc le seule moyen pour moi de compiler des programmes Ada pour Linux, c'est d'intaller un compilateur sur le serveur, dans mes repertoires. J'ai 100M d'espace sur le serveur, donc je peux me le permettre. Je me connecte en telnet ssh... je trouve ce truc vraiment marrant et amusant Je faisait déjà ça avant, quand mes cgi étaient en C : j'envoyais les sources par FTP, et je me connectais en ssh pour compiler et installer. Mais je ne veux plus coder en C (je me suis juré de ne plus mettre le nez dans des codes C, sauf pour aider et répondre à des questions sur les forums). Merci encore pour toutes les infos aux sujet du shell.. je vais essayer de mettre un .bashrc sur mon home (ou le modifier s'il y est déjà). Pour ce qui est de gnat1, j'ai trouvé un page man sur le web, s'y rapportant. Première mauvaise surprise, gnat1 ne reconnait pas la plupart des options standard pour un front-end, tel que pourtant décrit dans cette page man sur gnat1. Il semble quand même reconnaitre -I (pour lui dire où sont les librairies Ada), mais quand j'utilise cette option, le programme se termine immédiatement, avec ce seul message : « Killed » (par qui ? par quoi ? il le fait tout seul ?). Mais si je copie system.ads dans le même repertoire (i.e. dans le repertoire de gnat1), il le trouve, sans être killed (mais alors il ne reconnais pas les autres unités, même si elle sont copiées dans le repertoire, alors que cette stratégie marche avec system.ads, ça ne marche pas avec les autres unités). Voilà en résumé. Il faudrait trouver quelqu'un qui à l'habitude d'utiliser gnat sous linux. En tous cas, encore un grand merci pour ta gentillesse Celelibi, parce je n'en dirai pas tant de la plupart des fanas de linux (.... souvent moqueurs, etc... pardon de dire ça, c'est le vécu qui parle) Sinon, si ça ne marche pas, tant pis, je serai encore contraint et forcé contre mon grés une fois de plus d'utiliser un C dont je ne veux plus (parfois je me dis que le C, c'est encore plus collant que microsoft... et je me demande lequel de ces deux monopoles est le pire.... |
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 990 ![]() |
Et bien pourquoi ne pas booter sur une petite knoppix ou autre livecd pour faire tes compilations (et les débuggages qui vont s'en suivre) ?
Bien que l'ayant utilisé, je connais pas trop le compilateur gnat, et d'ailleurs, qu'est-ce-que t'as contre le C ?
__________________
Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter. |
|
|
00
|
|
|
#7 | ||
|
Membre Expert
![]() Inscription : février 2006 Messages : 953 ![]() |
Citation:
Citation:
Sinon, ne serait-il pas possible de sortir Cygwin pour lequel Gnat est dispo et de faire une cross compilation (là je suis moins certain) ? Ai trouvé ça : Ici Peut-être en settant (néologisme inside) ADA_INCLUDE_PATH ? |
||
|
|
00
|
|
|
#8 | |||
|
Inactif
Inscription : mars 2006 Messages : 852 ![]() |
Citation:
Citation:
Citation:
Je suis déçu que cette migration n'avance pas... j'espère trouver une solution bientôt. Bonne soiré à toutes et tuites |
|||
|
|
00
|
|
|
#9 |
|
Inactif
Inscription : mars 2006 Messages : 852 ![]() |
A l'heure actuelle, je n'ai toujours pas de solution. Je fait remonter une fois, mais je n'insisterai pas s'il n'y a pas d'autres propositions de solutions.
J'ai essayé plusieurs version du binaire « gnat1 », qui se terminent toutes par un laconique « Killed » renvoyé sur la console, avant même que la moindre compilation n'ait eu lieu. Je ne sais même pas s'il s'agit d'une faute d'accés mémoire, d'une faute d'opcode invalide, d'une faute d'alignement de donné, ou de quoi-que ce soit d'autre. E tout cas, c'est bien dommage pour un système Ada, que de ce terminer de façon aussi opaque. |
|
|
00
|
|
|
#10 |
|
Inactif
Inscription : mars 2006 Messages : 852 ![]() |
Il y a peut-être une solution simple. Ce n'est pas une solution pour installer Gnat sans être root, mais plutôt une solution pour permettre au driver gcc de trouver ses fichiers systèmes : executable gnat1, librairies ada, etc.. Gcc reconnait une option, -B, qui permet justement de donner le chemin de ces fichiers. Il suffirait dans un premier temps, d'ajouter le chemin de gnat dans mon path. Comme on peut transmettre à Gnat, des paramètres qui sont retransmis à Gcc, alors je pourrais peut-être passer cette option -B à gnat, pour qu'il la passe à gcc. Pour ne pas avoir à taper à chaque fois cette option et sa valeur, je pourrais créer un alias bash pour la commande gnat, qui incluerait l'option de manière transparente.
Donc avec ceci, je peux installer gnat (en fait copier les fichiers de gnat) dans mon repertoire sur le serveur, et utiliser gnat comme s'il avait été installer normalement dans les repertoires de gcc, par l'intermédiaire de cette option qui fera la liaison entre les deux. Cette une option qui n'est jamais utilisé (parce qu'elle n'est pas utile dans les conditions normales d'utilisation de gcc)... comme elle n'est jamais utilisé, je n'en avais jamais entendu parler, et je l'ai découverte aujourd'hui par hasard en lisant la doc de gcc. J'essaierai demain, et je donnerai des nouvelles. |
|
|
00
|
|
|
#11 |
|
Inactif
Inscription : mars 2006 Messages : 852 ![]() |
Je ne viens toujours pas marquer le topic comme résolu
J'ai essayé, l'option -B fonctionne bien pour indiquer à GCC l'emplacement de gnat1. Mais ensuite, il y avait un problème avec les librairies Ada. J'ai voulu les indiquer avec la variable d'environnement CPATH, mais elle ne semblait pas être reconnue. J'ai alors essayé d'indiquer l'emplacement des librairies Ada avec l'option -I (i majuscule), et là... plantage de gcc qui me dit qu'en fait c'est gnat1 qui a planté. Pour en avoir le coeur net, je lance alors directement gnat1 pour un test... pour seul message et seul explication : un laconique «Killed». Ca ne change pas, Linux est toujours incompatible avec Linux, et les message d'erreur sont toujours aussi verbeux et donnent une aide toujours aussi précieuse. Je pensais aujourd'hui peut-être ouvrire un compte sur SourceForge.net... juste histoire d'avoir accès à un compilateur Ada quelque part sur un serveur Linux. Mais d'abord je ne suis même pas sure qu'ils aient Gnat, et ensuite, il faudra que je cré un projet factice juste pour avoir accès à un compilateur Gnat sous Linux... (et là j'ai pas d'idées) C'est une bonne idée ou pas ? |
|
|
00
|
|
|
#12 | |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 990 ![]() |
Citation:
Pour ce qui est du "Killed", un processus se kill rarement tout seul. Étant donné que le système sur lequel tu essaye de compiler semble être un système commun à plusieurs usagers il ne serait pas étonnant de voir le noyau patché par grsecurity (qui intègre PaX). Que te donne la commande uname -a ? Si il s'avère que le noyau est PaXé, il serait fort probable que le binaire gnat1 nécessite un chpax pour fonctionner correctement.
__________________
Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com