Soit deux fichiers C appeles malib.c et monprog.c
malib.c:
---------
extern int reponse;
int demander_a_librairie(void)
{
return reponse;
}
-------
monprog.c:
---------
#include <stdio.h>
int demander_a_librairie(void);
int reponse;
int main(void)
{
reponse=42;
printf("la reponse est %d\n",demander_a_librairie());
}
---------
Sous linux je peux creer une librairie partagee a partir de malib.c
Autrement dit libmalib.so connait un symbole qui lui est externe et elle
attend qu'il soit defini par le programme qui l'appelle.
Sous Mac OS X (10.3) je ne peux meme pas creer la libraire libmalib.dylib:
brian-~/bin/sostuff $ gcc -c -o malib.o malib.c
brian-~/bin/sostuff $ gcc -dynamiclib -install_name libmalib.dylib -o
libmalib.dylib malib.o
ld: Undefined symbols:
_reponse
/usr/bin/libtool: internal link edit command failed
Est-ce qu'il y a moyen de creer des librairies qui ne deinissent pas tous
leurs symboles sous Mac OS X? une idee pour contourner le probleme?
Toute aide serait tres appreciable. Merci.
--
Saïd.
C programmers never die - they're just cast into void.
Soit deux fichiers C appeles malib.c et monprog.c malib.c: --------- extern int reponse; int demander_a_librairie(void) { return reponse; } -------
monprog.c: --------- #include <stdio.h>
int demander_a_librairie(void); int reponse;
int main(void) { reponseB; printf("la reponse est %dn",demander_a_librairie()); } --------- Sous linux je peux creer une librairie partagee a partir de malib.c
Autrement dit libmalib.so connait un symbole qui lui est externe et elle attend qu'il soit defini par le programme qui l'appelle.
Sous Mac OS X (10.3) je ne peux meme pas creer la libraire libmalib.dylib: brian-~/bin/sostuff $ gcc -c -o malib.o malib.c brian-~/bin/sostuff $ gcc -dynamiclib -install_name libmalib.dylib -o libmalib.dylib malib.o ld: Undefined symbols: _reponse /usr/bin/libtool: internal link edit command failed
Est-ce qu'il y a moyen de creer des librairies qui ne deinissent pas tous leurs symboles sous Mac OS X? une idee pour contourner le probleme?
Toute aide serait tres appreciable. Merci.
man ld
apparemment, il y a des options concernant la tolérance concernant la présence de définition symboles ou non. -weak_reference_mismatches -weak-lx -weak_library
-- DINH V. Hoa,
"monde de merde" -- Erwan David
Bonjour,
Soit deux fichiers C appeles malib.c et monprog.c
malib.c:
---------
extern int reponse;
int demander_a_librairie(void)
{
return reponse;
}
-------
monprog.c:
---------
#include <stdio.h>
int demander_a_librairie(void);
int reponse;
int main(void)
{
reponseB;
printf("la reponse est %dn",demander_a_librairie());
}
---------
Sous linux je peux creer une librairie partagee a partir de malib.c
Autrement dit libmalib.so connait un symbole qui lui est externe et elle
attend qu'il soit defini par le programme qui l'appelle.
Sous Mac OS X (10.3) je ne peux meme pas creer la libraire libmalib.dylib:
brian-~/bin/sostuff $ gcc -c -o malib.o malib.c
brian-~/bin/sostuff $ gcc -dynamiclib -install_name libmalib.dylib -o
libmalib.dylib malib.o
ld: Undefined symbols:
_reponse
/usr/bin/libtool: internal link edit command failed
Est-ce qu'il y a moyen de creer des librairies qui ne deinissent pas tous
leurs symboles sous Mac OS X? une idee pour contourner le probleme?
Toute aide serait tres appreciable. Merci.
man ld
apparemment, il y a des options concernant la tolérance concernant la
présence de définition symboles ou non.
-weak_reference_mismatches
-weak-lx
-weak_library
Soit deux fichiers C appeles malib.c et monprog.c malib.c: --------- extern int reponse; int demander_a_librairie(void) { return reponse; } -------
monprog.c: --------- #include <stdio.h>
int demander_a_librairie(void); int reponse;
int main(void) { reponseB; printf("la reponse est %dn",demander_a_librairie()); } --------- Sous linux je peux creer une librairie partagee a partir de malib.c
Autrement dit libmalib.so connait un symbole qui lui est externe et elle attend qu'il soit defini par le programme qui l'appelle.
Sous Mac OS X (10.3) je ne peux meme pas creer la libraire libmalib.dylib: brian-~/bin/sostuff $ gcc -c -o malib.o malib.c brian-~/bin/sostuff $ gcc -dynamiclib -install_name libmalib.dylib -o libmalib.dylib malib.o ld: Undefined symbols: _reponse /usr/bin/libtool: internal link edit command failed
Est-ce qu'il y a moyen de creer des librairies qui ne deinissent pas tous leurs symboles sous Mac OS X? une idee pour contourner le probleme?
Toute aide serait tres appreciable. Merci.
man ld
apparemment, il y a des options concernant la tolérance concernant la présence de définition symboles ou non. -weak_reference_mismatches -weak-lx -weak_library
-- DINH V. Hoa,
"monde de merde" -- Erwan David
Saïd
DINH Viêt Hoà :
man ld
apparemment, il y a des options concernant la tolérance concernant la présence de définition symboles ou non. -weak_reference_mismatches -weak-lx -weak_library
J'essaye dans tous les sens, mais ca ne donne rien:
-- Saïd. C programmers never die - they're just cast into void.
DINH Viêt Hoà :
man ld
apparemment, il y a des options concernant la tolérance concernant la
présence de définition symboles ou non.
-weak_reference_mismatches
-weak-lx
-weak_library
J'essaye dans tous les sens, mais ca ne donne rien:
apparemment, il y a des options concernant la tolérance concernant la présence de définition symboles ou non. -weak_reference_mismatches -weak-lx -weak_library
J'essaye dans tous les sens, mais ca ne donne rien:
% cc malib.c -dynamiclib -flat_namespace -undefined suppress -o libmalib.dylib % cc monprog.c -L. -lmalib -o monprog % ./monprog la reponse est 42
Merci beaucoup.
-- Saïd. C programmers never die - they're just cast into void.
DINH Viêt Hoà
Luc Heinrich :
Saïd wrote:
Toute aide serait tres appreciable. Merci.
% cc malib.c -dynamiclib -flat_namespace -undefined suppress -o libmalib.dylib % cc monprog.c -L. -lmalib -o monprog % ./monprog la reponse est 42
Merci beaucoup.
Par contre, ce genre de pratiques (bibliothèque qui nécessite des symboles étant définis dans les programmes utilisant la bibliothèque) est punie par la loi des développements bien conçus et propre.
-- DINH V. Hoa,
"Ma tuxitude me beastifie" -- sunZ
Luc Heinrich :
Saïd <said@brian.lan> wrote:
Toute aide serait tres appreciable. Merci.
% cc malib.c -dynamiclib -flat_namespace -undefined suppress
-o libmalib.dylib
% cc monprog.c -L. -lmalib -o monprog
% ./monprog
la reponse est 42
Merci beaucoup.
Par contre, ce genre de pratiques (bibliothèque qui nécessite des
symboles étant définis dans les programmes utilisant la bibliothèque)
est punie par la loi des développements bien conçus et propre.
% cc malib.c -dynamiclib -flat_namespace -undefined suppress -o libmalib.dylib % cc monprog.c -L. -lmalib -o monprog % ./monprog la reponse est 42
Merci beaucoup.
Par contre, ce genre de pratiques (bibliothèque qui nécessite des symboles étant définis dans les programmes utilisant la bibliothèque) est punie par la loi des développements bien conçus et propre.
-- DINH V. Hoa,
"Ma tuxitude me beastifie" -- sunZ
Saïd
DINH Viêt Hoà :
Luc Heinrich :
Saïd wrote:
Toute aide serait tres appreciable. Merci.
% cc malib.c -dynamiclib -flat_namespace -undefined suppress -o libmalib.dylib % cc monprog.c -L. -lmalib -o monprog % ./monprog la reponse est 42
Merci beaucoup.
Par contre, ce genre de pratiques (bibliothèque qui nécessite des symboles étant définis dans les programmes utilisant la bibliothèque) est punie par la loi des développements bien conçus et propre.
Je n'en doute pas, mais ce sur quoi je travaille n'en est pas a ca pres. ;-)
-- Saïd. C programmers never die - they're just cast into void.
DINH Viêt Hoà :
Luc Heinrich :
Saïd <said@brian.lan> wrote:
Toute aide serait tres appreciable. Merci.
% cc malib.c -dynamiclib -flat_namespace -undefined suppress
-o libmalib.dylib
% cc monprog.c -L. -lmalib -o monprog
% ./monprog
la reponse est 42
Merci beaucoup.
Par contre, ce genre de pratiques (bibliothèque qui nécessite des
symboles étant définis dans les programmes utilisant la bibliothèque)
est punie par la loi des développements bien conçus et propre.
Je n'en doute pas, mais ce sur quoi je travaille n'en est pas a ca pres.
;-)
--
Saïd.
C programmers never die - they're just cast into void.
% cc malib.c -dynamiclib -flat_namespace -undefined suppress -o libmalib.dylib % cc monprog.c -L. -lmalib -o monprog % ./monprog la reponse est 42
Merci beaucoup.
Par contre, ce genre de pratiques (bibliothèque qui nécessite des symboles étant définis dans les programmes utilisant la bibliothèque) est punie par la loi des développements bien conçus et propre.
Je n'en doute pas, mais ce sur quoi je travaille n'en est pas a ca pres. ;-)
-- Saïd. C programmers never die - they're just cast into void.
twigster
bonjour,
d'abord merci vous avez résolu mes pbs existenciels :)
mais j'ai juste encore une question:
la variable d'env LD_LIBRARY_PATH est-elle utile sous OSX?
merci Alex
bonjour,
d'abord merci vous avez résolu mes pbs existenciels :)
mais j'ai juste encore une question:
la variable d'env LD_LIBRARY_PATH est-elle utile sous OSX?