2012-06-04 2 views
2

У меня есть простой Makefile, в котором одна цель зависит от библиотеки:Создание GNU Make найти правильную зависимость библиотеки

test49: test49.c -lpthread 

Двоичный построен с использованием неявного правила для превращения файла .c в исполняемый файл.

Проблема в том, что я пытаюсь перекрестно скомпилировать, но make интерпретирует -lpthread как указывающий на /usr/lib/libpthread.so, что совершенно неверно. Я определил путь к кросс-компилятору, используя CC=/path/to/bin/gcc, поэтому я бы предположил, что он может понять, что -lpthread должен быть где-то в /path/to/lib, но это не так.

+0

Что в вашей переменной окружения LD_LIBRARY_PATH? – Dan

+0

Как вы ожидаете Make to guess '/ path/to/lib'? – Beta

ответ

1

Вы могли бы заменить

test49: test49.c -lpthread 

с

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

Да, это обходной путь, к которому я придумал, но для того, чтобы его жестко закодировать, это кажется неправильным, и это вызовет больше проблем. – Michael

+0

Вы должны сказать, где это как-то. Сообщайте, где gcc не сообщает ничего о расположении '.so' файлов на вашем компьютере. – Dan

+0

@Michael Является ли ваш libpthread в нестандартном месте? Вы также можете сделать так, как Дэн, похоже, хотел предложить и добавить '/ path/to/lib' в переменную среды LD_LIBRARY_PATH. –

Смежные вопросы