Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

libc en statique (compilation C)

2 réponses
Avatar
JKB
Bonjour à tous,

J'ai un petit problème de compilation C à vous soumettre... Je viens
de me faire un voire deux noeuds au cerveau sans résultat. Un
programme que je développe utilise une libc patchée. J'aimerais que
le makefile correspondant utilise cette version de la libc, compilée
en statique. Problème, j'ai des bouts de code qui utilisent
la version standard liée dynamiquement

1/ J'ai essayé l'option -nostdlib, mais certaines biblithèques
coimpilées avec la _vraie_ libc provoquent des problèmes (elles ne
trouvent pas stat, fstat et lstat).
2/ J'ai essayé de la lier dynamiquement, mais cela ne fonctionne
pas.

Donc mon problème : soit une arboresence comme suit :

rpl
src -> lié avec ma nouvelle libc et tout ce qui se trouve dans tools
tools -> diverses bibliothèques liées à l'ancienne libc
(dynamiquement)

Comment s'en sortir ? Une idée ?

Merci d'avance,

JKB

--
En plus c'est simple, je fais ce genre de trucs en g77 depuis des années :
il suffit d'écrire un wrapper en C. Et comme ça, j'ai le meilleur des deux
mondes : la rigueur quasi-monacale du Fortran, et l'exubérance pétulante du C.

2 réponses

Avatar
l'indien
On Tue, 15 Mar 2005 15:26:02 +0000, JKB wrote:

Bonjour à tous,

J'ai un petit problème de compilation C à vous soumettre... Je viens
de me faire un voire deux noeuds au cerveau sans résultat. Un
programme que je développe utilise une libc patchée. J'aimerais que
le makefile correspondant utilise cette version de la libc, compilée
en statique. Problème, j'ai des bouts de code qui utilisent
la version standard liée dynamiquement

1/ J'ai essayé l'option -nostdlib, mais certaines biblithèques
coimpilées avec la _vraie_ libc provoquent des problèmes (elles ne
trouvent pas stat, fstat et lstat).
2/ J'ai essayé de la lier dynamiquement, mais cela ne fonctionne
pas.

Donc mon problème : soit une arboresence comme suit :

rpl
src -> lié avec ma nouvelle libc et tout ce qui se trouve dans tools
tools -> diverses bibliothèques liées à l'ancienne libc
(dynamiquement)


Tu linkes d'abord avec ta libc statique, avec l'option -r comme celà ld
n'esaiera pas de résoudre les symboles inexistants.
Tu linkes le résultat avec la libc dynamique...
Avec tous les risques que ça comporte en cas d'incompatibilité d'humeur
entre les 2 libc....

Avatar
JKB
Le 15-03-2005, à propos de
Re: libc en statique (compilation C),
l'indien écrivait dans fr.comp.os.linux.configuration :
On Tue, 15 Mar 2005 15:26:02 +0000, JKB wrote:

Bonjour à tous,

J'ai un petit problème de compilation C à vous soumettre... Je viens
de me faire un voire deux noeuds au cerveau sans résultat. Un
programme que je développe utilise une libc patchée. J'aimerais que
le makefile correspondant utilise cette version de la libc, compilée
en statique. Problème, j'ai des bouts de code qui utilisent
la version standard liée dynamiquement

1/ J'ai essayé l'option -nostdlib, mais certaines biblithèques
coimpilées avec la _vraie_ libc provoquent des problèmes (elles ne
trouvent pas stat, fstat et lstat).
2/ J'ai essayé de la lier dynamiquement, mais cela ne fonctionne
pas.

Donc mon problème : soit une arboresence comme suit :

rpl
src -> lié avec ma nouvelle libc et tout ce qui se trouve dans tools
tools -> diverses bibliothèques liées à l'ancienne libc
(dynamiquement)


Tu linkes d'abord avec ta libc statique, avec l'option -r comme celà ld
n'esaiera pas de résoudre les symboles inexistants.
Tu linkes le résultat avec la libc dynamique...
Avec tous les risques que ça comporte en cas d'incompatibilité d'humeur
entre les 2 libc....


C'est bien le problème... J'avais déjà essayé. J'ai trouvé une
solution un peu batarde qui consiste à ressortir un bout de code
d'un noyau BSD me permettant de générer mon checkpoint... Et en
plus, ça a le bon goût d'être portable ;-)

JKB

--
En plus c'est simple, je fais ce genre de trucs en g77 depuis des années :
il suffit d'écrire un wrapper en C. Et comme ça, j'ai le meilleur des deux
mondes : la rigueur quasi-monacale du Fortran, et l'exubérance pétulante du C.