Pour une utilisation un peu "hors norme", j'ai besoin d'inclure du
code mort dans un exécutable statique (imposé par cahier des
charges pour un certain nombre de raisons).
Or cet exécutable peut charger des extensions qui sont des
bibliothèques partagées.
L'application en question se compose d'un certain nombres de
fonctions "utiles" au programme principal et d'un certain nombre de
fonctions qui ne sont jamais utilisées par le programme principal
mais seulement par ces "extensions". Toutes ces fonctions sont
exportées par le programme principal vers les extensions
(-rexport-dynamic). Je ne sais pas si je suis très clair.
Mon problème est le suivant : l'outil est lié statiquement avec
OpenMotif, mais à l'édition des liens, seules les fonctions
réellements utilisées par l'application sont liées statiquement. Les
autres sont ignorées. Comment faire pour forcer l'inclusion de toutes
les fonctions d'OpenMotif dans mon exécutable afin que les extensions
puissent y avoir accès ? J'utilise GNU-ld et je n'ai rien trouvé qui aille
dans ce sens.
Je précise que je ne _veux_ ni ne _peux_ lier dynamiquement
l'application avec la libXm.so.
Je suis preneur de toute idée...
Cordialement,
JKB
--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Khanh-Dang
Le lundi 26 septembre 2011, JKB a écrit :
Mon problème est le suivant : l'outil est lié statiquement avec OpenMotif, mais à l'édition des liens, seules les fonctions réellements utilisées par l'application sont liées statiquement. Les autres sont ignorées. Comment faire pour forcer l'inclusion de toutes les fonctions d'OpenMotif dans mon exécutable afin que les extensions puissent y avoir accès ? J'utilise GNU-ld et je n'ai rien trouvé qui aille dans ce sens.
Est-ce que l'option --whole-archive ne fait pas ce que tu veux ? Dans la page man du GNU-ld de la debian squeeze, j'ai :
--whole-archive For each archive mentioned on the command line after the --whole-archive option, include every object file in the archive in the link, rather than searching the archive for the required object files. This is normally used to turn an archive file into a shared library, forcing every object to be included in the resulting shared library. This option may be used more than once.
Two notes when using this option from gcc: First, gcc doesn't know about this option, so you have to use -Wl,-whole-archive. Second, don't forget to use -Wl,-no-whole-archive after your list of archives, because gcc will add its own list of archives to your link and you may not want this flag to affect those as well.
Le lundi 26 septembre 2011, JKB a écrit :
Mon problème est le suivant : l'outil est lié statiquement avec
OpenMotif, mais à l'édition des liens, seules les fonctions
réellements utilisées par l'application sont liées statiquement. Les
autres sont ignorées. Comment faire pour forcer l'inclusion de toutes
les fonctions d'OpenMotif dans mon exécutable afin que les extensions
puissent y avoir accès ? J'utilise GNU-ld et je n'ai rien trouvé qui aille
dans ce sens.
Est-ce que l'option --whole-archive ne fait pas ce que tu veux ?
Dans la page man du GNU-ld de la debian squeeze, j'ai :
--whole-archive
For each archive mentioned on the command line after the
--whole-archive option, include every object file in the archive in
the link, rather than searching the archive for the required object
files. This is normally used to turn an archive file into a shared
library, forcing every object to be included in the resulting
shared library. This option may be used more than once.
Two notes when using this option from gcc: First, gcc doesn't know
about this option, so you have to use -Wl,-whole-archive. Second,
don't forget to use -Wl,-no-whole-archive after your list of
archives, because gcc will add its own list of archives to your
link and you may not want this flag to affect those as well.
Mon problème est le suivant : l'outil est lié statiquement avec OpenMotif, mais à l'édition des liens, seules les fonctions réellements utilisées par l'application sont liées statiquement. Les autres sont ignorées. Comment faire pour forcer l'inclusion de toutes les fonctions d'OpenMotif dans mon exécutable afin que les extensions puissent y avoir accès ? J'utilise GNU-ld et je n'ai rien trouvé qui aille dans ce sens.
Est-ce que l'option --whole-archive ne fait pas ce que tu veux ? Dans la page man du GNU-ld de la debian squeeze, j'ai :
--whole-archive For each archive mentioned on the command line after the --whole-archive option, include every object file in the archive in the link, rather than searching the archive for the required object files. This is normally used to turn an archive file into a shared library, forcing every object to be included in the resulting shared library. This option may be used more than once.
Two notes when using this option from gcc: First, gcc doesn't know about this option, so you have to use -Wl,-whole-archive. Second, don't forget to use -Wl,-no-whole-archive after your list of archives, because gcc will add its own list of archives to your link and you may not want this flag to affect those as well.
JKB
Le 26 Sep 2011 12:50:49 GMT, Khanh-Dang écrivait :
Le lundi 26 septembre 2011, JKB a écrit :
Mon problème est le suivant : l'outil est lié statiquement avec OpenMotif, mais à l'édition des liens, seules les fonctions réellements utilisées par l'application sont liées statiquement. Les autres sont ignorées. Comment faire pour forcer l'inclusion de toutes les fonctions d'OpenMotif dans mon exécutable afin que les extensions puissent y avoir accès ? J'utilise GNU-ld et je n'ai rien trouvé qui aille dans ce sens.
Est-ce que l'option --whole-archive ne fait pas ce que tu veux ? Dans la page man du GNU-ld de la debian squeeze, j'ai :
--whole-archive For each archive mentioned on the command line after the --whole-archive option, include every object file in the archive in the link, rather than searching the archive for the required object files. This is normally used to turn an archive file into a shared library, forcing every object to be included in the resulting shared library. This option may be used more than once.
Two notes when using this option from gcc: First, gcc doesn't know about this option, so you have to use -Wl,-whole-archive. Second, don't forget to use -Wl,-no-whole-archive after your list of archives, because gcc will add its own list of archives to your link and you may not want this flag to affect those as well.
Groumphfff... C'est exactement ce que je cherche. Pourtant, j'ai lu et relu cette page man depuis la semaine dernière sans trouver ce que je cherchais...
Merci,
JKB
-- Si votre demande me parvient sur carte perforée, je titiouaillerai très volontiers une réponse... => http://grincheux.de-charybde-en-scylla.fr
Le 26 Sep 2011 12:50:49 GMT,
Khanh-Dang <khanh-dang@w.fr.invalid> écrivait :
Le lundi 26 septembre 2011, JKB a écrit :
Mon problème est le suivant : l'outil est lié statiquement avec
OpenMotif, mais à l'édition des liens, seules les fonctions
réellements utilisées par l'application sont liées statiquement. Les
autres sont ignorées. Comment faire pour forcer l'inclusion de toutes
les fonctions d'OpenMotif dans mon exécutable afin que les extensions
puissent y avoir accès ? J'utilise GNU-ld et je n'ai rien trouvé qui aille
dans ce sens.
Est-ce que l'option --whole-archive ne fait pas ce que tu veux ?
Dans la page man du GNU-ld de la debian squeeze, j'ai :
--whole-archive
For each archive mentioned on the command line after the
--whole-archive option, include every object file in the archive in
the link, rather than searching the archive for the required object
files. This is normally used to turn an archive file into a shared
library, forcing every object to be included in the resulting
shared library. This option may be used more than once.
Two notes when using this option from gcc: First, gcc doesn't know
about this option, so you have to use -Wl,-whole-archive. Second,
don't forget to use -Wl,-no-whole-archive after your list of
archives, because gcc will add its own list of archives to your
link and you may not want this flag to affect those as well.
Groumphfff... C'est exactement ce que je cherche. Pourtant, j'ai lu
et relu cette page man depuis la semaine dernière sans trouver ce
que je cherchais...
Merci,
JKB
--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Le 26 Sep 2011 12:50:49 GMT, Khanh-Dang écrivait :
Le lundi 26 septembre 2011, JKB a écrit :
Mon problème est le suivant : l'outil est lié statiquement avec OpenMotif, mais à l'édition des liens, seules les fonctions réellements utilisées par l'application sont liées statiquement. Les autres sont ignorées. Comment faire pour forcer l'inclusion de toutes les fonctions d'OpenMotif dans mon exécutable afin que les extensions puissent y avoir accès ? J'utilise GNU-ld et je n'ai rien trouvé qui aille dans ce sens.
Est-ce que l'option --whole-archive ne fait pas ce que tu veux ? Dans la page man du GNU-ld de la debian squeeze, j'ai :
--whole-archive For each archive mentioned on the command line after the --whole-archive option, include every object file in the archive in the link, rather than searching the archive for the required object files. This is normally used to turn an archive file into a shared library, forcing every object to be included in the resulting shared library. This option may be used more than once.
Two notes when using this option from gcc: First, gcc doesn't know about this option, so you have to use -Wl,-whole-archive. Second, don't forget to use -Wl,-no-whole-archive after your list of archives, because gcc will add its own list of archives to your link and you may not want this flag to affect those as well.
Groumphfff... C'est exactement ce que je cherche. Pourtant, j'ai lu et relu cette page man depuis la semaine dernière sans trouver ce que je cherchais...
Merci,
JKB
-- Si votre demande me parvient sur carte perforée, je titiouaillerai très volontiers une réponse... => http://grincheux.de-charybde-en-scylla.fr