J'ai une configuration fonctionnelle, où tous les fichiers sont dans le même répertoire (bureau). La sortie du terminal est comme ceci:La question du débutant, essayant de comprendre comment l'éditeur de liens recherche une bibliothèque statique
$ gcc -c mymath.c
$ ar r mymath.a mymath.o
ar: creating archive mymath.a
$ ranlib mymath.a
$ gcc test.c mymath.a -o test
$ ./test
Hello World!
3.14
1.77
10.20
Les fichiers:
mymath.c:
float mysqrt(float n) {
return 10.2;
}
test.c:
#include <math.h>
#include <stdio.h>
#include "mymath.h"
main() {
printf("Hello World!\n");
float x = sqrt(M_PI);
printf("%3.2f\n", M_PI);
printf("%3.2f\n", sqrt(M_PI));
printf("%3.2f\n", mysqrt(M_PI));
return 0;
}
Maintenant, je propose l'archive MyMath .a dans un sous-répertoire/temp. Je ne l'ai pas été en mesure d'obtenir la mise en relation au travail:
$ gcc test.c mymath.a -o test -l/Users/telliott_admin/Desktop/temp/mymath.a
i686-apple-darwin10-gcc-4.2.1: mymath.a: No such file or directory
$ gcc test.c -o test -I/Users/telliott_admin/Desktop/temp -lmymath
ld: library not found for -lmymath
collect2: ld returned 1 exit status
Qu'est-ce que je manque? Quelles ressources recommanderiez-vous?
Mise à jour: Merci pour votre aide. Toutes les réponses étaient fondamentalement correctes. J'ai blogué à ce sujet here.
Désolé pour le typo. Je suis à la recherche de ma propre bibliothèque "fake": mymath qui est dans/temp – telliott99
Yep. Ces deux ont travaillé pour moi. Merci. – telliott99