GCC et Mono
Résolu/Fermé
zaidoun
-
20 juil. 2015 à 14:00
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 25 juil. 2015 à 11:06
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 25 juil. 2015 à 11:06
A voir également:
- GCC et Mono
- Comment désactiver le mode mono jbl - Forum Casque et écouteurs
- Mono television - Forum Téléviseurs
- Comment connecter le deuxième écouteur sans fil JBL Free ? - Forum Casque et écouteurs
- Comment désactiver le mode mono jbl ? - Forum Casque et écouteurs
- Tv toshiba écran bleu mono ✓ - Forum TV & Vidéo
4 réponses
mamiemando
Messages postés
33363
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 novembre 2024
7 801
20 juil. 2015 à 19:23
20 juil. 2015 à 19:23
Je n'ai pas tout compris car certaines phrases ne sont pas claires mais je pense que tu mélanges certaines choses.
Le compilateur dépend du langage : par exemple g90 pour du fortran, javac pour du java, gcc pour du c, g++ pour du c++. Pour certains langage il existe plusieurs compilateurs (par exemple clang est un compilateur c ou c++).
Ensuite se pose la question du choix de l'architecture (arm, i386, amd64, ...). Si cette architecture ne correspond pas à celle du système sur lequel est installé ton compilateur, on parle de compilation croisée. Certains langages reposent sur une machine virtuelle. C'est le cas de java et de c#. Dans le cas de java il n'y a donc pas de considération sur l'architecture cible : le binaire produit, appelé bytecode, est compatible avec toutes les machines virtuelles java (c'est d'ailleurs l'un des intérêts vantés par java).
http://www-igm.univ-mlv.fr/~dr/XPOSE2013/Comparaison_JVM_CLR/comparaison.html
Maintenant, pour répondre à te question, il faut déterminer dans quel langage tu veux programmer et quelle architecture est utilisée par ton calculateur. Ensuite il faut te renseigner sur comment compiler un programme pour cette architecture (s'il s'agit de compilation croisée) avec les logiciels disponibles sur ton système d'exploitation.
Reste aussi à voir si C# ou C sont les langages les plus appropriés. Il existe d'autres alternatives, par exemple python. C'est un langage multiplateforme, donc du moment que python est installé sur la machine cible (ainsi que les modules utilisés par ton programme), ça marche. Reste à voir si ce langage est envisageable pour tes besoins et si python installable sur ton calculateur...
Bonne chance
Le compilateur dépend du langage : par exemple g90 pour du fortran, javac pour du java, gcc pour du c, g++ pour du c++. Pour certains langage il existe plusieurs compilateurs (par exemple clang est un compilateur c ou c++).
Ensuite se pose la question du choix de l'architecture (arm, i386, amd64, ...). Si cette architecture ne correspond pas à celle du système sur lequel est installé ton compilateur, on parle de compilation croisée. Certains langages reposent sur une machine virtuelle. C'est le cas de java et de c#. Dans le cas de java il n'y a donc pas de considération sur l'architecture cible : le binaire produit, appelé bytecode, est compatible avec toutes les machines virtuelles java (c'est d'ailleurs l'un des intérêts vantés par java).
http://www-igm.univ-mlv.fr/~dr/XPOSE2013/Comparaison_JVM_CLR/comparaison.html
Maintenant, pour répondre à te question, il faut déterminer dans quel langage tu veux programmer et quelle architecture est utilisée par ton calculateur. Ensuite il faut te renseigner sur comment compiler un programme pour cette architecture (s'il s'agit de compilation croisée) avec les logiciels disponibles sur ton système d'exploitation.
Reste aussi à voir si C# ou C sont les langages les plus appropriés. Il existe d'autres alternatives, par exemple python. C'est un langage multiplateforme, donc du moment que python est installé sur la machine cible (ainsi que les modules utilisés par ton programme), ça marche. Reste à voir si ce langage est envisageable pour tes besoins et si python installable sur ton calculateur...
Bonne chance
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
Modifié par gravgun le 21/07/2015 à 19:19
Modifié par gravgun le 21/07/2015 à 19:19
'lut, (en reprenant ce que tu dis précédemment à mamiemando), il me semble que tu ne comprends pas bien comment une compilation croisée se fait. Effectivement c'est pour créer un exécutable pour une machine différente de celle qui compile, toute fois l'aspect "croisé" ne concerne pas du tout le langage utilisé! On ne compile pas du C# en C (ça s'appellerait alors transpilation, bien que dans l'absolu ce n'est pas impossible, il existe même le projet Vala qui prend un langage très similaire au C# et qui transpile en C avant de compiler avec GCC).
Tu dis ici que tu développes en C#, or tu veux compiler pour une cible ARM avec GCC, c'est donc en C ou C++ qu'il faut coder. Le C# ne donne pas de code natif donc la compilation croisée à proprement parler est impossible, vu que le C# donne du code .NET CLR, interprété par Mono, qui lui en revanche doit être cross-compilé.
Ceci dit pour que Mono marche sur le dit calculateur, il s'attend à un environnement dans lequel il peut travailler, à savoir un OS suivant les standards POSIX... ce qui n'est peut-être pas le cas du calculateur.
On manque donc de détails concernant ce que ton code C# utilise et fait, et ce que le calculateur que tu mentionnes utilises comme OS s'il en a un, et quel modèle c'est...
from human import idiocy
del idiocy
Tu dis ici que tu développes en C#, or tu veux compiler pour une cible ARM avec GCC, c'est donc en C ou C++ qu'il faut coder. Le C# ne donne pas de code natif donc la compilation croisée à proprement parler est impossible, vu que le C# donne du code .NET CLR, interprété par Mono, qui lui en revanche doit être cross-compilé.
Ceci dit pour que Mono marche sur le dit calculateur, il s'attend à un environnement dans lequel il peut travailler, à savoir un OS suivant les standards POSIX... ce qui n'est peut-être pas le cas du calculateur.
On manque donc de détails concernant ce que ton code C# utilise et fait, et ce que le calculateur que tu mentionnes utilises comme OS s'il en a un, et quel modèle c'est...
from human import idiocy
del idiocy
Salut
mon calculateur utilise un os puisque il comporte une carte SD ou je l'installe l'os vraiment je pense au transpilation comme une solution de langage c# en c puis le compilé par gcc avec de le deux ligne si dessus mais s'il y a avait un os dans ce calculateur est-ce que sera faisable ou si vous avez un autre démarche ne hésite pas de me guider
mon calculateur utilise un os puisque il comporte une carte SD ou je l'installe l'os vraiment je pense au transpilation comme une solution de langage c# en c puis le compilé par gcc avec de le deux ligne si dessus mais s'il y a avait un os dans ce calculateur est-ce que sera faisable ou si vous avez un autre démarche ne hésite pas de me guider
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
>
gravgun
21 juil. 2015 à 22:32
21 juil. 2015 à 22:32
Ceci tu ne réponds pas à mes questions: quel est l'OS, quel est l'appareil? Et surtout, quelles fonctionnalités utilises-tu dans ton programme? Transpiler est possible, mais seulement pour des morceaux de code dont des alias sont dispo pour les compostants que tu utilises (par exemple ne songe même pas à utiliser tout ce qui commence par le namespace Microsoft, ni Windows.Forms)
mamiemando
Messages postés
33363
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 novembre 2024
7 801
22 juil. 2015 à 09:54
22 juil. 2015 à 09:54
Je ne sais pas pourquoi la discussion est partie de la transpilation ça ne me semble pas la bonne approche.
Le plus simple est, une fois le langage choisi, de chercher comment faire de la compilation croisée. Par exemple si on veut coder en C sous ubuntu x86 pour une cible ARM :
http://doc.ubuntu-fr.org/tutoriel/compilation_croisee
Pour C# je ne sais pas mais je prendrais quelques minutes à ta place en cherchant sur google "c# arm". Exemples :
https://stackoverflow.com/questions/5843333/c-sharp-compiler-that-can-generate-linux-arm-executables
https://stackoverflow.com/questions/476676/targeting-arm-architecture-with-net-compiler
Bonne chance
Le plus simple est, une fois le langage choisi, de chercher comment faire de la compilation croisée. Par exemple si on veut coder en C sous ubuntu x86 pour une cible ARM :
http://doc.ubuntu-fr.org/tutoriel/compilation_croisee
Pour C# je ne sais pas mais je prendrais quelques minutes à ta place en cherchant sur google "c# arm". Exemples :
https://stackoverflow.com/questions/5843333/c-sharp-compiler-that-can-generate-linux-arm-executables
https://stackoverflow.com/questions/476676/targeting-arm-architecture-with-net-compiler
Bonne chance
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
23 juil. 2015 à 10:19
23 juil. 2015 à 10:19
Je suis parti dans la transpilation car il parle de C# et de GCC, or GCC ne fait pas dans les langages .NET, s'il tiens à s'en servir alors la transpilation est une solution... pas très valable en fait.
bonjour
j'ai une solution pour ce type de problème en effet le résultat de mono (compilateur de c#) serra dans un fichier .c puis je le compile avec gcc compilateur croise donc la, question ici
comment mettre un résultat de commende linux en un fichier . c,,,,,,,,?
merci de me réponse
j'ai une solution pour ce type de problème en effet le résultat de mono (compilateur de c#) serra dans un fichier .c puis je le compile avec gcc compilateur croise donc la, question ici
comment mettre un résultat de commende linux en un fichier . c,,,,,,,,?
merci de me réponse
mamiemando
Messages postés
33363
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 novembre 2024
7 801
24 juil. 2015 à 19:23
24 juil. 2015 à 19:23
"comment mettre un résultat de commande linux en un fichier . c"
Désolé mais ce n'est pas clair...
De quelle commande parles-tu ?
Que veux tu dire par mettre un résultat en fichier .c ?
Désolé mais ce n'est pas clair...
De quelle commande parles-tu ?
Que veux tu dire par mettre un résultat en fichier .c ?
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
25 juil. 2015 à 11:06
25 juil. 2015 à 11:06
le résultat de mono (compilateur de c#) serra dans un fichier .cNon. Mono est un runtime/ensemble de compilateurs, mais il est impossible de sortir du code C avec.
Ce n'est pas le bon outil. Comme j'ai dit, il existe Vala, mais il n'existe pas de transpileur C# -> C pour la bonne raison que c'est impossible complètement: certaines fonctionnalités du langages/des bibliothèques standard C# ne peuvent pas être répliquées en C, comme la Reflection. De plus, comme je l'ai dit, les libs utilisées n'ont pour la plupart pas de bindings en C.
Le mieux que tu puisses faire est traduire ton code C# en C à la main, puis compiler avec GCC, mais ce que tu veut accomplir est quasiment impossible.
21 juil. 2015 à 13:32
je développe mon code en langage c # et bien sure mon architecture cible ARM
je compris tour ce que entrains de dire mais concernant la compilation croisé comment je le faire en pratique . par contre il y'a deux ligne que je le trouve qui explique comment le faire en langage c et l'exécute sur mon calculateur
la première ligne est : arm_nome_gnueabi-gcc-c -03- I ~/htcsdk/include-o test.o test.c
la deuxième ligne est : arm_nome_gnueabi-gcc-o test test.o L~/htcsdk/lib-lhtc_apio
pour résume je développe mon code en c # puis je le compile avec Mono comment je le rendre exécutable sur mon calculateur avec en utilisons la notion compilation croisé
24 juil. 2015 à 12:02
j'ai une solution pour ce type de problème en effet le résultat de mono (compilateur de c#) serra dans un fichier .c puis je le compile avec gcc compilateur croise donc la, question ici
comment mettre un résultat de commende linux en un fichier . c,,,,,,,,?
merci de me réponse