#7276 Le 13/04/2010, à 14:11
- Pylades
Re : Topic des couche-tard (31)
Pourquoi ne pas faire les 2 (.a et .so) ? Pour ce que ça coûte (quelques lignes dans un Makefile).
Et sinon, qu'est ce qui t'as dérangé dans getopt ?
Et si ce n'est pas indiscret quel est donc ta super idée ?
Ché pas faire les makefiles (honte sur moi), chuis un gros assisté qui utilise un IDE. Mais j’essaierai de me soigner quand ça me prendra. Sinon, getopt je trouve ça trop compliqué, tu dois boucler, bref c’est pas ce que j’imaginais.
En fait, mon idée c’est d’utiliser des structures.
Un truc du genre :
struct opt
{
char active; // si l’option est activée
char* short_act; // un tableau d’options courtes qui activent l’option
char** long_act; // un tableau d’options longues qui activent l’option
char* short_unact; // un tableau d’options courtes qui [b]dés[/b]activent l’option
char** long_unact;
char takes_value; // si l’option prend une valeur
char* value; // la valeur de l’option
};
L’utilisateur initialise ses structures comme il le souhaite, et passe un tableau de pointeurs vers ses structures à une fonction moulinette, qui actualise les structures en fonction des arguments passés à la commande.
Elle renvoie un tableau de deux tableaux : l’un concerne les options illégales, l’autre les paramètres qui ne sont pas des options.
Pour le reste, je n’en dis pas plus, c’est sous licence Microsoft Author Protection Genuine Premium. Ben oui, le libre c’est bien gentil, mais à un moment, hein, place au business !
Non, en fait c’est surtout que je n’ai pas encore écrit une seule ligne de code, et peut-être que je n’en écrirait pas avant longtemps.
Dernière modification par Pylade (Le 13/04/2010, à 14:18)
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#7277 Le 13/04/2010, à 14:16
- Pylades
Re : Topic des couche-tard (31)
grim7reaper a écrit :Pourquoi ne pas faire les 2 (.a et .so) ? Pour ce que ça coûte (quelques lignes dans un Makefile).
Tiens, tu aurais une explication sur la différence entre les deux, et les options pour faire l'un ou l'autre (de toi ou un bon lien)? la dernière fois que j'ai cherché je n'ai rien trouvé de clair. (wikipedia ne m'a pas aidé).
C’est simple, la bibliothèque partagée doit être présente sur la machine de l’utilisateur, et le programme se sert de celle-ci pour appeler ses fonctions. Avec une bibliothèque statique, les fonctions sont incluses dans le binaire exécutable, et il ne doit donc pas y avoir de bibliothèque présente chez l’utilisateur, mais c’est un gâchis de place si de nombreux programmes utilisent cette bibliothèque.
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#7278 Le 13/04/2010, à 14:17
- rmy
Re : Topic des couche-tard (31)
...
volontaire ou acte manqué ?
Dernière modification par rmy (Le 13/04/2010, à 14:28)
récupération de données: vrac–topic unique–mon site pro pour les particuliers : www.diskcard.fr– Je recycle volontiers tous vos disques durs HS (ou pas).
Le site pro pour les pros, spécialiste recupération de données RAID, NAS et serveurs: www.vodata.fr
Hors ligne
#7279 Le 13/04/2010, à 14:18
- Pylades
Re : Topic des couche-tard (31)
Pylade a écrit :[…]
volontaire ou acte manqué ?
Acte manqué…
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#7280 Le 13/04/2010, à 14:20
- helly
Re : Topic des couche-tard (31)
Plop
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#7281 Le 13/04/2010, à 14:33
- Toineo
Re : Topic des couche-tard (31)
Pylade :
edit : (c'est toujours vrai ), j'ai le souvenir d'une étude qui montrait que les devs qui ne faisaient *que* du libre (et pas à moitié ou pas du tout) étaient ceux qui gagnaient le plus.
Dernière modification par Toineo (Le 13/04/2010, à 15:08)
Fail
Hors ligne
#7282 Le 13/04/2010, à 14:44
- grim7reaper
Re : Topic des couche-tard (31)
@tshirtman
Une bibliothèque statique est une "archive" (avec une structure bien particulière) de fichiers objets (les fameux .o). Lorsque l'on compile un programme avec, le code des fonctions utilisées par le programme est copiés dans l'exécutable final.
L'avantage c'est que ton programme peut tourner sur n'importe quelle PC dépourvu de la bibliothèque (vu que tu intègres le code dans ton exécutable) et tu n'es pas non plus dépendant des versions de la bibliothèque présente sur la machine hôte. De plus, seule les fonctions réellement utilisés sont nécessaires et donc ajoutés dans l'exécutable.
L'inconvénient c'est que l'exécutable généré est plus gros. De plus, si cette bibliothèque est très utilisé tu dupliques le même code aussi bien sur le disque (via les exécutables) que dans la RAM (si plusieurs programmes l'utilisant sont lancés, on charge en mémoire plusieurs fois le même code). Enfin, à chaque modification de la bibliothèque tu dois recompiler tous les programmes l'utilisant pour bénéficier des nouveautés ou corrections de bugs.
Une bibliothèque dynamique est aussi un type d'archive, mais elle doit contenir du code particulier appelé "code relogeable" (du code qui doit pouvoir être exécuté n'importe où, car sa position dépendra du programme qui y fait appel). Lorsque l'on compile un programme utilisant une bibliothèque dynamique, les appels des fonctions de cette bibliothèque sont remplacés (je ne suis pas sûr que ça soit exactement ça, mais c'est un mécanisme relativement proche il me semble) par du code à l'intention du linker dynamique (qui agit au chargement ou durant l'exécution du programme).
Les avantages sont que si plusieurs programmes utilisent des fonctions de cette bibliothèque, le code est chargé une seule et unique fois en mémoire. De plus une modification mineure du code (tant que l'interface de la bibliothèque n'est pas modifiée) ne nécessite pas de recompilation. Enfin, les exécutables sont plus petits, car une partie du code est externe.
On peut remarquer que cette architecture est tout à fait adapter au système de plugin.
Les inconvénients sont que la bibliothèque doit être présente chez la cible (et être dans la même version majeure). De plus, ce n'est vraiment valable que si de nombreuses fonctions sont utilisés car, que tu en utilises une ou la totalité, l'ensemble du code est chargé en mémoire.
Sinon, il semblerait que les bibliothèques statiques soient plus performantes (car pas de chargement dynamique à faire), mais je n'ai moi-même jamais constaté cet effet (il faut sûrement bien abuser du mécanisme avant que ça n'apparaisse)
Par exemple la bibliothèque foobar contient les fonctions toto(), tata() et titi().
Le programme 42 utilise les fonctions toto et titi.
Si tu compiles 42 avec foobar en bibliothèque statique ton exécutable contiendra le code objet (.o) de toto et titi en plus de son propre code. Tu as un exécutable autonome et prêt à être distribué.
Si, par la suite, tu modifies le code de toto et bien il faudra recompiler.
Si tu compiles 42 avec foobar en bibliothèque dynamique ton exécutable ne contient que le code de 42 (modulo quelques instructions pour le linker dynamique). Cependant, il faudra t'assurer que les hôtes posséderont bien la bibliothèque foobar (si tu as utlisé foobar_1.3 alors toute la série foobar_1.* conviendra, mais pas les versions 0.* ou 2.*).
Si tu modifies le code de toto, tu bénéficies directement des modifications. Par contre, si tu modifies l'interface de toto (nombre de paramètres, type de retour) ou l'interface de la bibliothèque foobar (ajout de la fonction tutu(), ou retrait de la fonction titi()) et bien là il faudra quand même recompiler.
Pour compiler une bibliothèque en statique, la démarche générale est
# Creation des fichiers objets, le -static n'est pas obligatoire il me semble.
gcc -c -static *.c
# Creation de l'archive (-c create, -r inserer)
ar -cr talib.a *.o
# Creation de l'index
ranlib talib.a
Pour compiler une bibliothèque en dynamique, la démarche générale est
# Creation des fichiers objets, le -fPIC est pour créer du code relogeable (PIC = Position Independant Code).
gcc -c -fPIC *.c
# Creation de la bibliothèque, le -Wl c'est pour passer des options à l'éditeur de liens
# Ici on lui donne le soname (c'est une chaîne de caractère stocké dans la bibliothèque qui l'identifie, c'est pour les versions je crois). «man ld» pour plus d'info.
# Bien sur, les noms des bibliothèque doivent comporter le numéro majeur, mineur, voire révision pour bien faire les choses.
gcc -shared -o talib.so -Wl, -soname, talib.so.
Je ne sais pas si j'ai été clair ou trop confus , m'enfin si tu as des questions ou si tu veux des précisions bah demandes et je ferais de mon mieux (sinon pour un lien, celui-ci m'a appris pas mal de choses et il est complet, vieux mais toujours d'actualité dans l'ensemble).
@Pylade : pour les Makefile, un bon début ici, si tu veux faire des trucs poussés il y a ça.
Bon après, il paraît que pour les gros projets (bon pour une lib, make suffit) Cmake ou Scons c'est mieux (plus puissant, portable et surtout moins prise de tête que les autohell ^^)
Pour ton idée ça me semble complexe (pas franchement mieux que getopt), mais bon : wait & see. J'attends de voir ce que ça donne avant de juger .
Dernière modification par grim7reaper (Le 13/04/2010, à 19:10)
Hors ligne
#7283 Le 13/04/2010, à 14:55
- Pylades
Re : Topic des couche-tard (31)
Pylade : en même temps, libre peut rimer avec business... Juste savoir y faire.
Je ne répondrai que quelque chose genre
(et merci pour la condescendance envers le libre)
edit : pour ton information, j'ai le souvenir d'une étude qui montrait que les devs qui ne faisaient *que* du libre (et pas à moitié ou pas du tout) étaient ceux qui gagnaient le plus. Mais fais ce que tu veux hein...
Hé, c’était une blague, hein…
Tu ne sais pas lire le ce qui est écrit en transparent ?
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#7284 Le 13/04/2010, à 15:00
- Toineo
Re : Topic des couche-tard (31)
Toineo a écrit :Pylade :
edit : (c'est toujours vrai), j'ai le souvenir d'une étude qui montrait que les devs qui ne faisaient *que* du libre (et pas à moitié ou pas du tout) étaient ceux qui gagnaient le plus.
Hé, c’était une blague, hein…
Tu ne sais pas lire le ce qui est écrit en transparent ?
Lol, au temps pour moi. Je me disais que ton message était étonnement long après la fin, mais j'ai pas pensé à verifier le blanc ^^'
Tu m'as bien eu sur ce coup là, gg
Dernière modification par Toineo (Le 13/04/2010, à 15:07)
Fail
Hors ligne
#7285 Le 13/04/2010, à 15:12
- helly
Re : Topic des couche-tard (31)
(et merci pour la condescendance envers le libre)
Qui descend ?
ok /me -------->[]
Dernière modification par helly (Le 13/04/2010, à 15:12)
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#7286 Le 13/04/2010, à 15:39
- cm-t
Re : Topic des couche-tard (31)
faut remonter le niveaux :
plop!
Actu Ubuntu ☺/
Pauses Ubuntu sur Paris \_< -t
[(π)] La Quadrature du net
Hors ligne
#7287 Le 13/04/2010, à 16:07
- tshirtman
Re : Topic des couche-tard (31)
@grim7reaper: ok, je connaissait vite fait la différence entre lib statique et dynamique, mais je ne voyait pas trop passer de la compilation 'in' *.o → "a.out", à un type quelconque de lib, tes explications m'ont cependant pas mal appris, en plus de me donner les étapees techniques, pour en produire . Du coup je pense que je vais m'amuser un de ces 4 à découper un projet en .a (puis .so après) et avoir un tout petit exécutable
(je veux dire, encore plus que d'habitude)
Hors ligne
#7288 Le 13/04/2010, à 16:16
- compte supprimé
Re : Topic des couche-tard (31)
helly a écrit :Quelqu'un connais le lien entre le morpion l'animal et le morpion le jeu ?
En langage populaire, personne de petite dont on a du mal à se débarrasser...
D'où l'analogie enfant, jeu pour enfant etc. ( le jeu en ligne )
Et le grattage de l'autre jeu pour les démangeaisons du pou de pubis !
Un peu de culture
#7289 Le 13/04/2010, à 16:24
- helly
Re : Topic des couche-tard (31)
Cool , on voit qu'il y en a qui s'y connaissent en morpions ^^
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#7290 Le 13/04/2010, à 16:31
#7291 Le 13/04/2010, à 16:35
- helly
Re : Topic des couche-tard (31)
Opera = apple =
mais bonjour quand même
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#7292 Le 13/04/2010, à 16:58
- compte supprimé
Re : Topic des couche-tard (31)
Cool , on voit qu'il y en a qui s'y connaissent en morpions ^^
C'est une chanson de carabin. Je suis certain que mon confrère Irgenux la connait aussi
#7293 Le 13/04/2010, à 17:02
- edge_one
Re : Topic des couche-tard (31)
Opera = apple =
tu confonds avec safari je crois.
mais c'est proprio quand même.
#7294 Le 13/04/2010, à 17:03
- helly
Re : Topic des couche-tard (31)
Oui mais bon comme tu viens de dire : "quand même" !!!
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#7295 Le 13/04/2010, à 17:17
- ArzhurB
Re : Topic des couche-tard (31)
Ah non, pas d'accord ! Opera est peut-être proprio mais c'est sans doute le meilleur browser ! (ça doit être la seule app proprio valable ^^)
Hors ligne
#7296 Le 13/04/2010, à 17:28
- Elzen
Re : Topic des couche-tard (31)
Promis, dès qu'ils le libèrent, je teste avec plaisir.
Ah, et sinon,
Une femme du monde, et qui souvent me laisse
Faire mes quatre voluptés dans ses quartiers d'noblesse,
M'a sournoisement passé, sur son divan de soie,
Des parasites du plus bas étage qui soit,
Sous prétexte de bruit, sous couleur de réclame,
Ai-je le droit de ternir l'honneur de cette dame
En criant sur les toits, et sur l'air des lampions,
« Madame la Marquise m'a foutu les morpions ! » ?
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#7297 Le 13/04/2010, à 17:30
- helly
Re : Topic des couche-tard (31)
Ah non, pas d'accord ! Opera est peut-être proprio mais c'est sans doute le meilleur browser ! (ça doit être la seule app proprio valable ^^)
Le meilleur browser proprio ou le meilleur de TOUS ?
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#7298 Le 13/04/2010, à 17:36
- Irgenux
Re : Topic des couche-tard (31)
helly a écrit :Cool , on voit qu'il y en a qui s'y connaissent en morpions ^^
C'est une chanson de carabin. Je suis certain que mon confrère Irgenux la connait aussi
Et cette douce romance ?
helly a écrit :Opera = apple =
tu confonds avec safari je crois.
mais c'est proprio quand même.
Que veux-tu, elle voit le mal partout !
Bipède à station verticale.
Hors ligne
#7299 Le 13/04/2010, à 17:40
- Zeibux
Re : Topic des couche-tard (31)
Relou ce matin, none accesss to the TdcT! Abused! Fucking oueb!
B&BJ©!
Journée simpa o début, puis chiant chiant sur la fin! J'ai fais de la nacelle !
Croix de bois croix de fer, si je mens, j'me tape une bière
La Valeur sur, c'est sur qu'il avale!
je veux bien qu'on pisse dans un violon, mais.. En rythme non d'un chien!
[Mémoire virtuelle limitée] encrypté, et dans un format obscur, propriétaire et non documenté...
Hors ligne
#7300 Le 13/04/2010, à 17:40
- compte supprimé
Re : Topic des couche-tard (31)
hopimet a écrit :helly a écrit :Cool , on voit qu'il y en a qui s'y connaissent en morpions ^^
C'est une chanson de carabin. Je suis certain que mon confrère Irgenux la connait aussi
Et cette douce romance ?
Un chef d'œuvre digne de la plus grande poésie.