J'ai donc un logiciel executable que je livre à des clients et ceux ci
doivent faire eux même des modifications dans des procedures .
Je l'ai déja fait avec windows et des dll et ca marche bien , je livrais au
client mon executable et une dll de test avec quelques procedures bien
défini et ils n'avaient qu'à modifier ces procécures et à recompiler la dll
, je n'avait pas à leur donner mes sources de mon programme principale.
Existe t-il un moyen de faire la même chose sous linux ?
Quiz> Existe t-il un moyen de faire la même chose sous linux ?
$ man dlopen
M. -- And if you don't know where you're going, any road will take you there...
Pascal Bourguignon
"Quiz" writes:
J'ai donc un logiciel executable que je livre à des clients et ceux ci doivent faire eux même des modifications dans des procedures . Je l'ai déja fait avec windows et des dll et ca marche bien , je livrais au client mon executable et une dll de test avec quelques procedures bien défini et ils n'avaient qu'à modifier ces procécures et à recompiler la dll , je n'avait pas à leur donner mes sources de mon programme principale. Existe t-il un moyen de faire la même chose sous linux ?
Bien sur. Il suffit de distribuer les '.o' et un Makefile pour faire une édition de lien. Pour simplifier, on peut aussi simplement rassembler les '.o' dans une bibliothèque '.a'.
On peut aussi prendre le problème dans l'autre sens, et utiliser dlopen(3) pour charger dynamiquement une bibliothèque de procédures fournies par l'utilisateur ("plug-in").
Mais dans le cas où on utilise des bibliothèques GPL ou LGPL, il faut utiliser la première solution, afin de permettre à l'utilisateur de faire une édition de lien avec une version modifiée des bibliothèques sous licence GPL.
PUBLIC NOTICE AS REQUIRED BY LAW: Any use of this product, in any manner whatsoever, will increase the amount of disorder in the universe. Although no liability is implied herein, the consumer is warned that this process will ultimately lead to the heat death of the universe.
"Quiz" <Quiz@hotmail.com> writes:
J'ai donc un logiciel executable que je livre à des clients et ceux ci
doivent faire eux même des modifications dans des procedures .
Je l'ai déja fait avec windows et des dll et ca marche bien , je livrais au
client mon executable et une dll de test avec quelques procedures bien
défini et ils n'avaient qu'à modifier ces procécures et à recompiler la dll
, je n'avait pas à leur donner mes sources de mon programme principale.
Existe t-il un moyen de faire la même chose sous linux ?
Bien sur. Il suffit de distribuer les '.o' et un Makefile pour faire
une édition de lien. Pour simplifier, on peut aussi simplement
rassembler les '.o' dans une bibliothèque '.a'.
On peut aussi prendre le problème dans l'autre sens, et utiliser
dlopen(3) pour charger dynamiquement une bibliothèque de procédures
fournies par l'utilisateur ("plug-in").
Mais dans le cas où on utilise des bibliothèques GPL ou LGPL, il faut
utiliser la première solution, afin de permettre à l'utilisateur de
faire une édition de lien avec une version modifiée des bibliothèques
sous licence GPL.
PUBLIC NOTICE AS REQUIRED BY LAW: Any use of this product, in any
manner whatsoever, will increase the amount of disorder in the
universe. Although no liability is implied herein, the consumer is
warned that this process will ultimately lead to the heat death of
the universe.
J'ai donc un logiciel executable que je livre à des clients et ceux ci doivent faire eux même des modifications dans des procedures . Je l'ai déja fait avec windows et des dll et ca marche bien , je livrais au client mon executable et une dll de test avec quelques procedures bien défini et ils n'avaient qu'à modifier ces procécures et à recompiler la dll , je n'avait pas à leur donner mes sources de mon programme principale. Existe t-il un moyen de faire la même chose sous linux ?
Bien sur. Il suffit de distribuer les '.o' et un Makefile pour faire une édition de lien. Pour simplifier, on peut aussi simplement rassembler les '.o' dans une bibliothèque '.a'.
On peut aussi prendre le problème dans l'autre sens, et utiliser dlopen(3) pour charger dynamiquement une bibliothèque de procédures fournies par l'utilisateur ("plug-in").
Mais dans le cas où on utilise des bibliothèques GPL ou LGPL, il faut utiliser la première solution, afin de permettre à l'utilisateur de faire une édition de lien avec une version modifiée des bibliothèques sous licence GPL.
PUBLIC NOTICE AS REQUIRED BY LAW: Any use of this product, in any manner whatsoever, will increase the amount of disorder in the universe. Although no liability is implied herein, the consumer is warned that this process will ultimately lead to the heat death of the universe.
Quiz
Merci des réponses
"Quiz" a écrit dans le message de news: el6gbs$tgk$
Bonjour,
J'ai donc un logiciel executable que je livre à des clients et ceux ci doivent faire eux même des modifications dans des procedures . Je l'ai déja fait avec windows et des dll et ca marche bien , je livrais au client mon executable et une dll de test avec quelques procedures bien défini et ils n'avaient qu'à modifier ces procécures et à recompiler la dll , je n'avait pas à leur donner mes sources de mon programme principale. Existe t-il un moyen de faire la même chose sous linux ?
Merci des réponses
"Quiz" <Quiz@hotmail.com> a écrit dans le message de news:
el6gbs$tgk$1@s1.news.oleane.net...
Bonjour,
J'ai donc un logiciel executable que je livre à des clients et ceux ci
doivent faire eux même des modifications dans des procedures .
Je l'ai déja fait avec windows et des dll et ca marche bien , je livrais
au client mon executable et une dll de test avec quelques procedures bien
défini et ils n'avaient qu'à modifier ces procécures et à recompiler la
dll , je n'avait pas à leur donner mes sources de mon programme
principale.
Existe t-il un moyen de faire la même chose sous linux ?
"Quiz" a écrit dans le message de news: el6gbs$tgk$
Bonjour,
J'ai donc un logiciel executable que je livre à des clients et ceux ci doivent faire eux même des modifications dans des procedures . Je l'ai déja fait avec windows et des dll et ca marche bien , je livrais au client mon executable et une dll de test avec quelques procedures bien défini et ils n'avaient qu'à modifier ces procécures et à recompiler la dll , je n'avait pas à leur donner mes sources de mon programme principale. Existe t-il un moyen de faire la même chose sous linux ?
ALain Montfranc
Marc Zyngier a écrit
"Quiz" == Quiz writes:
Bonjour,
[...]
Quiz> Existe t-il un moyen de faire la même chose sous linux ?
$ man dlopen
M.
Plus simple : LD_PRELOAD ;-)
Marc Zyngier a écrit
"Quiz" == Quiz <Quiz@hotmail.com> writes:
Bonjour,
[...]
Quiz> Existe t-il un moyen de faire la même chose sous linux ?
Quiz> Existe t-il un moyen de faire la même chose sous linux ?
$ man dlopen
M.
Plus simple : LD_PRELOAD ;-)
Quiz
Ok pour les fichiers .o mais comment fait on les fichiers .a ? De plus est ce qu'on peut debugger les bibliothèques par gdb ou gdbserver ?
"Pascal Bourguignon" a écrit dans le message de news:
"Quiz" writes:
J'ai donc un logiciel executable que je livre à des clients et ceux ci doivent faire eux même des modifications dans des procedures . Je l'ai déja fait avec windows et des dll et ca marche bien , je livrais au client mon executable et une dll de test avec quelques procedures bien défini et ils n'avaient qu'à modifier ces procécures et à recompiler la dll , je n'avait pas à leur donner mes sources de mon programme principale. Existe t-il un moyen de faire la même chose sous linux ?
Bien sur. Il suffit de distribuer les '.o' et un Makefile pour faire une édition de lien. Pour simplifier, on peut aussi simplement rassembler les '.o' dans une bibliothèque '.a'.
On peut aussi prendre le problème dans l'autre sens, et utiliser dlopen(3) pour charger dynamiquement une bibliothèque de procédures fournies par l'utilisateur ("plug-in").
Mais dans le cas où on utilise des bibliothèques GPL ou LGPL, il faut utiliser la première solution, afin de permettre à l'utilisateur de faire une édition de lien avec une version modifiée des bibliothèques sous licence GPL.
PUBLIC NOTICE AS REQUIRED BY LAW: Any use of this product, in any manner whatsoever, will increase the amount of disorder in the universe. Although no liability is implied herein, the consumer is warned that this process will ultimately lead to the heat death of the universe.
Ok pour les fichiers .o mais comment fait on les fichiers .a ?
De plus est ce qu'on peut debugger les bibliothèques par gdb ou gdbserver ?
"Pascal Bourguignon" <pjb@informatimago.com> a écrit dans le message de
news: 87wt55uorf.fsf@thalassa.informatimago.com...
"Quiz" <Quiz@hotmail.com> writes:
J'ai donc un logiciel executable que je livre à des clients et ceux ci
doivent faire eux même des modifications dans des procedures .
Je l'ai déja fait avec windows et des dll et ca marche bien , je livrais
au
client mon executable et une dll de test avec quelques procedures bien
défini et ils n'avaient qu'à modifier ces procécures et à recompiler la
dll
, je n'avait pas à leur donner mes sources de mon programme principale.
Existe t-il un moyen de faire la même chose sous linux ?
Bien sur. Il suffit de distribuer les '.o' et un Makefile pour faire
une édition de lien. Pour simplifier, on peut aussi simplement
rassembler les '.o' dans une bibliothèque '.a'.
On peut aussi prendre le problème dans l'autre sens, et utiliser
dlopen(3) pour charger dynamiquement une bibliothèque de procédures
fournies par l'utilisateur ("plug-in").
Mais dans le cas où on utilise des bibliothèques GPL ou LGPL, il faut
utiliser la première solution, afin de permettre à l'utilisateur de
faire une édition de lien avec une version modifiée des bibliothèques
sous licence GPL.
PUBLIC NOTICE AS REQUIRED BY LAW: Any use of this product, in any
manner whatsoever, will increase the amount of disorder in the
universe. Although no liability is implied herein, the consumer is
warned that this process will ultimately lead to the heat death of
the universe.
Ok pour les fichiers .o mais comment fait on les fichiers .a ? De plus est ce qu'on peut debugger les bibliothèques par gdb ou gdbserver ?
"Pascal Bourguignon" a écrit dans le message de news:
"Quiz" writes:
J'ai donc un logiciel executable que je livre à des clients et ceux ci doivent faire eux même des modifications dans des procedures . Je l'ai déja fait avec windows et des dll et ca marche bien , je livrais au client mon executable et une dll de test avec quelques procedures bien défini et ils n'avaient qu'à modifier ces procécures et à recompiler la dll , je n'avait pas à leur donner mes sources de mon programme principale. Existe t-il un moyen de faire la même chose sous linux ?
Bien sur. Il suffit de distribuer les '.o' et un Makefile pour faire une édition de lien. Pour simplifier, on peut aussi simplement rassembler les '.o' dans une bibliothèque '.a'.
On peut aussi prendre le problème dans l'autre sens, et utiliser dlopen(3) pour charger dynamiquement une bibliothèque de procédures fournies par l'utilisateur ("plug-in").
Mais dans le cas où on utilise des bibliothèques GPL ou LGPL, il faut utiliser la première solution, afin de permettre à l'utilisateur de faire une édition de lien avec une version modifiée des bibliothèques sous licence GPL.
PUBLIC NOTICE AS REQUIRED BY LAW: Any use of this product, in any manner whatsoever, will increase the amount of disorder in the universe. Although no liability is implied herein, the consumer is warned that this process will ultimately lead to the heat death of the universe.
Matthieu Moy
"Quiz" writes:
Ok pour les fichiers .o mais comment fait on les fichiers .a ?
man ar
De plus est ce qu'on peut debugger les bibliothèques par gdb ou gdbserver ?
Pour les bibliothèques statiques (.a), je ne crois même pas que le debugger voit la différence, puisque gdb ne voit que le binaire après édition de lien.
Pour les bibliothèques dynamiques (.so, générées par exemple avec gcc -shared), ça marche aussi très bien en général, le seul truc est que ça complique un peu les choses si on veut poser un breakpoint sur une fonction qui n'est pas encore chargée par exemple (enfin, ça complique surtout pour les développeurs de gdb, pour l'utilisateur, gdb demande si on veut mettre le breakpoint au chargement de la bibliothèque).
-- Matthieu
"Quiz" <Quiz@hotmail.com> writes:
Ok pour les fichiers .o mais comment fait on les fichiers .a ?
man ar
De plus est ce qu'on peut debugger les bibliothèques par gdb ou
gdbserver ?
Pour les bibliothèques statiques (.a), je ne crois même pas que le
debugger voit la différence, puisque gdb ne voit que le binaire après
édition de lien.
Pour les bibliothèques dynamiques (.so, générées par exemple avec gcc
-shared), ça marche aussi très bien en général, le seul truc est que
ça complique un peu les choses si on veut poser un breakpoint sur une
fonction qui n'est pas encore chargée par exemple (enfin, ça complique
surtout pour les développeurs de gdb, pour l'utilisateur, gdb demande
si on veut mettre le breakpoint au chargement de la bibliothèque).
Ok pour les fichiers .o mais comment fait on les fichiers .a ?
man ar
De plus est ce qu'on peut debugger les bibliothèques par gdb ou gdbserver ?
Pour les bibliothèques statiques (.a), je ne crois même pas que le debugger voit la différence, puisque gdb ne voit que le binaire après édition de lien.
Pour les bibliothèques dynamiques (.so, générées par exemple avec gcc -shared), ça marche aussi très bien en général, le seul truc est que ça complique un peu les choses si on veut poser un breakpoint sur une fonction qui n'est pas encore chargée par exemple (enfin, ça complique surtout pour les développeurs de gdb, pour l'utilisateur, gdb demande si on veut mettre le breakpoint au chargement de la bibliothèque).