Comment compiler partagé lib avec clang sur osx
fichier source
rsetti::fastidio { /tmp }-> cat foo.c
#include <stdio.h>
void ACFunction() {
printf("ACFunction()\n");
AGoFunction();
}
compilation de partagé lib
rsetti::fastidio { /tmp }-> clang -shared -o libfoo.so foo.c
foo.c:4:3: warning: implicit declaration of function 'AGoFunction' is invalid in C99 [-Wimplicit-function-declaration]
AGoFunction();
^
1 warning generated.
Undefined symbols for architecture x86_64:
"_AGoFunction", referenced from:
_ACFunction in foo-lFDQ4g.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
rsetti::fastidio { /tmp }->
le même code sur linux + gcc peut être facilement compilé.
double possible de Quel est le problème avec les symboles non définis dans une bibliothèque partagée ou dylib?
Où est le code ou l'objet pour AGoFunction?
Où est le code ou l'objet pour AGoFunction?
OriginalL'auteur giskard | 2014-02-20
Vous devez vous connecter pour publier un commentaire.
En utilisant:
ou
semble maintenir le même comportement de la GCC.
Vous pouvez marquer votre propre réponse acceptée 😉
.dylib
est la forme canonique de prolongation pour une bibliothèque partagée sur macOS, à l'aide de-dynamiclib
au lieu de-shared
. Voir stackoverflow.com/questions/2339679/...OriginalL'auteur giskard