2012-06-04 2 views
2

J'ai un Makefile simple dans lequel une cible dépend d'une bibliothèque:Faire GNU Make localiser la dépendance de la bibliothèque correcte

test49: test49.c -lpthread 

Le binaire est construit en utilisant la règle implicite pour transformer un fichier .c dans un exécutable

Le problème est, j'essaye de compiler croisé, mais faire interprète -lpthread comme pointant vers /usr/lib/libpthread.so, qui est tout à fait incorrect. J'ai défini le chemin vers le compilateur croisé en utilisant CC=/path/to/bin/gcc, donc je suppose qu'il pourrait comprendre que -lpthread devrait être quelque part dans /path/to/lib, mais ce n'est pas le cas.

+0

Ce qui est dans votre variable d'environnement LD_LIBRARY_PATH? – Dan

+0

Comment vous attendez-vous à faire deviner '/ path/to/lib'? – Beta

Répondre

1

Vous pouvez remplacer

test49: test49.c -lpthread 

avec

test49: test49.c /path/to/lib/lpthread.so 
+0

Ouais, c'est la solution de contournement que j'ai inventée, mais devoir coder en dur comme ça me semble incorrect, et cela va causer plus de problèmes sur la ligne. – Michael

+0

Vous devez dire faire où c'est en quelque sorte. Dire make où est gcc ne dit rien sur l'emplacement des fichiers '.so' sur votre machine. – Dan

+0

@Michael Votre libpthread est-elle dans un emplacement non standard? Vous pourriez aussi faire comme Dan semblait sur le point de suggérer et d'ajouter '/ path/to/lib' à la variable d'environnement' LD_LIBRARY_PATH'. –