Linux pour développer

C'est le lieu des discussions diverses et variées, mais toujours en rapport avec le thème général du forum et dans l'esprit de celui-ci.

Modérateurs : Carl, Papy.G, fneck

Avatar du membre
yo_fr
Messages : 1320
Enregistré le : 13 août 2009 18:24
Localisation : 78...
Contact :

Linux pour développer

Message par yo_fr » 07 mai 2017 07:39

Bonjour à tous,

Sans vouloir polémiquer sur les qualités des distributions Linux, je voudrais savoir quelle est la "bonne" (où approchant) distribution pour m'y mettre.
Mon but est assez simple : je voudrais monter une plateforme de développement Cpp avec les SDL2 (J'ai réécris VBHector en C sous Windows, et je voudrais maintenant le mettre sous Linux...), et peut être un jour je regarderais Java où d'autres langages plus moderne.

Je ne travaillerais pas tous les jours avec Linux, je reste avec Window$.
J'ai essayé Ubuntu qui semble avoir la cote en ce moment (juste installé). Bon ça marche, c'est vrai, mais c'est beaucoup trop bubble gomme. J'ai l'impression que cette distribution est surtout destiné à créer des postes clients, donc assez éloigné de mon but où je devrais avoir les mains un peu plus dans le cambouis.
Là je suis parti à télécharger la Debian qui, il y a beaucoup d'années, était the distribution. A cette époque j'utilisais feu Mandrake (un peu plus de 15 ans !).

Voilà si vous avez des idées...
Merci :wink:


__sam__
Messages : 3991
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Linux pour développer

Message par __sam__ » 07 mai 2017 11:42

Perso je resterais sous Windows. Mais j'installerais cygwin et un bon ide dispo partout (éclipse). Avec ça si ça marche sous Windows ça marchera sous linux.

En plus avec cet ide tu peux faire du dev croisé: travail sous Windows, téléchargement transparent sur machine cible idem pour le debug : tu mets des pts d arrêt sous Windows mais c'est le truc qui tourne sur la machine distant que tu debug.

Professionnellement on à fait ça avec plein de target cibles. Du rasppberry sous linux, aux mini cartes sans os type stm32f4 en passant par des plus gros trucs type mpc455 (de mémoire, mais bref la carte de dev pour cpu centrale d'un certain nb de marques automobiles françaises.)

Enfin dernier avantage de cet ide c'est que c'est aussi le meilleur pour java. Donc autant s'y habituer dès le départ.
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Patrick
Messages : 607
Enregistré le : 16 mai 2009 09:30
Localisation : Clermont-Ferrand

Re: Linux pour développer

Message par Patrick » 07 mai 2017 13:34

Tu peux toujours essayer une VM sur Windows pour avoir le meilleur des deux mondes. Personnellement j'utilise Virtualbox. Comme distribution j'utilise Fedora qui procure des MAJ régulières et un environnement de développement très riche. Eclipse par exemple est à la dernière version, Neon 3. D'autres distribution ne sont pas aussi réactives.
Patrick

Avatar du membre
Mokona
Messages : 292
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Linux pour développer

Message par Mokona » 07 mai 2017 16:55

Ubuntu est très bien pour le développement. Son avantage principal est son support et sa facilité d'installation. Pour entrer dans le monde Linux, ça se fait du coup en douceur (du moment que, comme avec d'autres OS, tous les drivers pour ton matériel est disponible sinon... ben sinon ça ne marche pas, ou pas bien).

Debian est aussi assez simple et si tu veux plus de liberté de configuration, c'est un système plus flexible. En retour, ça demande un peu plus d'investissements. Mais sinon ça marche très bien tel quel (encore une fois, vérifier le matériel supporté).

Ces deux distributions partent du principe que la stabilité des outils est mieux que d'avoir la toute dernière version. Du coup, il peut y avoir quelques trucs avec des versions un peu datées. Ubuntu a une mise à jour complète tous les 6 mois.

Il existe d'autres distributions avec rolling release. Mais du coup, c'est préférer le nouveau à la stabilité. C'est un choix.

Avec le concept des paquets Snap, disponibles sur beaucoup de distributions, les choses sont en train de changer et une distribution de paquets avec choix de canaux (dernière release, la stable, le développement) est en train de se mettre en place dans le monde Linux. Toujours avec gestion de dépendances entre les applications/bibliothèques pour éviter les installations bancales (après, tout se dévérouille et on peut toujours installer ce que l'on veut à la main, pour le meilleur ou pour le pire).

De mon côté : je tourne avec Ubuntu principalement (desktop, laptop et netbook... ce dernier utilisant Lubuntu pour des raisons de puissance de la machine). Et je développe sur les trois.

Avatar du membre
yo_fr
Messages : 1320
Enregistré le : 13 août 2009 18:24
Localisation : 78...
Contact :

Re: Linux pour développer

Message par yo_fr » 07 mai 2017 17:51

Oui, j'ai pas dit mais c'est bien-sur pour installer dans une machine virtuelle et sous VirtualBox en l’occurrence.

J'essaye Debian. Par contre effectivement un cross développement avec Cygwin/eclipse est peut être intéressant.

Avatar du membre
Mokona
Messages : 292
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Linux pour développer

Message par Mokona » 08 mai 2017 12:07

Cygwin, que j'utilise au bureau, est pratique faute de mieux, mais désespérant. On sent bien que les deux mondes ont du mal à cohabiter et il y a plein de petits trucs qui énervent à l'utilisation, à commencer par la lenteur effroyable du système.

Mais bon... en effet, faute de mieux...

__sam__
Messages : 3991
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Linux pour développer

Message par __sam__ » 08 mai 2017 13:13

J'ai aussi perso chez moi une version "standalone" de mingw qui fait des exe sans dépendance aux bibliothèques linuxiennes inutiles. Bref on à un exe Windows pur. Mais ce n'est pas le but du posteur originel je crois.
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Avatar du membre
6502man
Messages : 8933
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Linux pour développer

Message par 6502man » 11 mai 2017 11:38

J'utilise de tant à autre Ubuntu c'est plutôt stable, après pour le dev je ne fais plus rien sur Linux :?
Mais tu devrais trouver ton bonheur dans les paquets d'Ubuntu je pense, qui est bien fourni en appli en tout genre :D
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
yo_fr
Messages : 1320
Enregistré le : 13 août 2009 18:24
Localisation : 78...
Contact :

Re: Linux pour développer

Message par yo_fr » 27 juin 2017 18:04

Aller un petit retour sur ce que j'ai fait :
J'ai testé plusieurs distrib Linux et je me suis finalement arrêté sur la Kubuntu (17.04).
J'ai installé la SDL2, wxWidgets et Code::block
Bon c'est pas si simple que ça quand on a perdu ses réflexes linuxiens (j'ai pas mal cherché pourquoi mon SU ne marchait pas, par exemple :wink: ).

Je suis assez surpris de :
1) le nombre de plantage de Code::block dans linux ! Je n'ai jamais planté CB sous windows et là régulièrement j'ai un arrêt brusque de CB.
2) SDL2 n'est pas 100% compatible entre Win et Linux : Le même code n'a pas le même comportement. Plein de petits détails font que le fonctionnement doit être revu. Par exemple je n'ai pas réussi à récupérer l'état des touche et j'ai du lire depuis wxWidgets...(pour les curieux, c'est parce que sous Linux il faut absolument être dans le même thread et pas forcément dans Windows... mais il n'y a pas eu que cela).

Bref maintenant ça marche, bon je préfère encore la version VB qu est beaucoup plus complète, mais là j'ai quand même quelque chose de fonctionnel (HR+, HRX, MX40, MX80 et Mini disque + clavier / écran (toutes résolutions) / son 1 bit / son sn76477 / cassette (en lecture, bientôt écriture) / mini disque et Disc2) :
wxHector.JPG
wxHector.JPG (94.94 Kio) Vu 1036 fois

__sam__
Messages : 3991
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Linux pour développer

Message par __sam__ » 27 juin 2017 19:10

Félicitations!

De ce que je comprends des misères de développement et instabilités, cela demontre que l'environnement Linux ne possede plus le niveau de qualité d'autrefois. Il voulait concurrencer Windows mais apparaît nettement plus complexe avec 36 distributions toutes plus imparfaites et moins stables les unes que les autres.

En tant que développeur amateur linux c'est rigolo et on peut assurément s'éclater à passer des heures dessus, mais pour du dev un peu sérieux avec 10+ collaborateurs ça fait vite perdre trop temps à tout le monde.

Ça partait bien pourtant au départ Linux. Je ne sais pas où il est parti de travers...

à+ Sam (sous une sorte de linux hyper limité)
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Avatar du membre
Mokona
Messages : 292
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Linux pour développer

Message par Mokona » 27 juin 2017 21:07

yo_fr a écrit :Par exemple je n'ai pas réussi à récupérer l'état des touche ... il faut absolument être dans le même thread
Par curiosité, quoi doit être dans le même thread que quoi ?

Normalement, toutes les fonctions de la SDL (à part les bêtes calculs sur des structures et flags) doivent être dans le thread qui a appelé SDL_Init. Aucune des fonctions SDL n'est thread safe.

Le fonctionnement est ensuite que les event dépendant de la plateforme sont envoyés dans une file d'évènements que l'on doit lire via la pompe à évènements. La encore, ces fonctions ne sont pas thread safe. Le point de lecture doit, par design, être sur le même thread que le SDL_Init() (plus exactement, par la fonction qui crée le contexte de fenêtre, car c'est la fenêtre qui reçoit les évènements).

Je suis intéressé par les autres différences trouvées.
__sam__ a écrit :De ce que je comprends des misères de développement et instabilités, cela demontre que l'environnement Linux ne possede plus le niveau de qualité d'autrefois.
L'instabilité d'un logiciel (C::B) n'est pas forcément corrélé au système sur lequel il tourne. La dernière fois que j'ai essayé C::B, il était instable, et c'était il y a un peu moins de 10 ans, lors des premières versions "stables" (je ne l'ai jamais utilisé sous Windows). Je vote donc pour : pas de changement à ce niveau là.
mais pour du dev un peu sérieux avec 10+ collaborateurs ça fait vite perdre trop temps à tout le monde.
Il y a de très grosses boites et de très gros projets qui dev sous un système Linux, et qui en sont bien content.

Avatar du membre
yo_fr
Messages : 1320
Enregistré le : 13 août 2009 18:24
Localisation : 78...
Contact :

Re: Linux pour développer

Message par yo_fr » 27 juin 2017 21:50

SDL_INIT est dans le main, mais j'appelle ma procédure clavier depuis une interruption (SDL_GetKeyboardState, il me semble) J'ai également essayé dans un IDLE du frame principal mais là non plus ça marchait pas (pas de retour du clavier).

Avatar du membre
Mokona
Messages : 292
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Linux pour développer

Message par Mokona » 27 juin 2017 22:07

SDL_GetKeyboardState() ne fait rien d'autre que renvoyer un accès à l'état mis à jour par SDL_PumpEvents(), via un pointeur sur une structure globale contenant tous les états clavier. Le code est dans la section commune à toutes les plateformes (events/SDL_keyboard.c)

Du coup, à part la possibilité que la structure soit changée en plein pendant sa lecture, je ne vois pas trop ce qu'il pourrait se passer de travers au niveau SDL.

"interruption" et "IDLE" : comment sont-ils crées/utilisé ?

Avatar du membre
yo_fr
Messages : 1320
Enregistré le : 13 août 2009 18:24
Localisation : 78...
Contact :

Re: Linux pour développer

Message par yo_fr » 28 juin 2017 18:58

L'interruption vient de ma boucle d'émulation que j'ai trouvé pour être synchro avec le son :

-> J'ai une boucle de 20 ms d'émulation de la machine qui remplit un buffer de 20ms de son (et calcule tout le reste, évidement)
-> en fin de lecture du son de 20 ms je reçois une notification de demande de remplissage de buffer grâce à une notification (fonction de callback dans le SDL_OpenAudio.
-> Dans ce callback, je remplis le buffer audio puis je lance une demande d'évenement (SendEvent)
-> C'est cet événement qui régénère 20ms d'exécution d'émulation et qui re remplit le buffer de 20ms de son
etc...

C'est dans la fonction appelée par l’événement que j'appel donc la fonction clavier.

Maintenant c'est pas grave car en prenant le fonction wxWidgets (wxGetKeyState) j'ai fait l'affaire.

Plus genant et la gestion du son : Dans le SDL_OpenAudio je demande :
samples = 882
format = AUDIO_S16
freq = 44100
channel = 2

je me retrouve en sortie avec un buffer de 441 (882/2). J'ai du demander 882*2 samples pour être correcte et je ne sais pas pourquoi (dans la version Windows c'était impect).

Autre soucis : Dans la version Windows je mettais directement le handle du panel dans le SDL_CreateWindowFrom mais dans linux j'ai du passer par :

Code : Tout sélectionner

GtkWidget* w = Panel1->GetHandle();
gtk_widgetrealize(w);
void* xid = GTK_WINDOW_XWINDOW(w->window);
et à ce moment là on peut appeler le SDL_CreateWindowFrom avec le xid et non avec le Panel1->GetHandle()
Et il n'est pas aisé de trouver les linkage à réaliser pour compilé ce petit bout de code... (petit bout de code trouvé, heureusement, sur Internet)


A ce jour tout fonctionne, mais j'ai encore des petits soucis de synchro sur l'émulation (des accélérations) et je ne sais pas encore pourquoi (pas trop gênant toutefois, mais qui n’apparaît pas sous windows avec les mêmes structures de fonctionnement (celle décrite ci dessus!)

Le plus triste est que je pensais qu'avec wxWidgets et SDL2 le code allait être directement compatible avec Linux mais c'est pas le cas (où du moins mon cas). Il faudrait que je fasse maintenant l'inverse : reprendre le code sous linux et le compiler sous Windows, mais là j'attaque mes gros travaux d'été (pro)... ça sera pour plus tard.

Si quelqu'un veut les sources, je suis prêt à les transmettre (tel quel, sur simple demande :wink: ).

Répondre