Я начинаю думать о переплетении программирования с экстрасенсорной карьерой ...
Почему компоновщик ищет libm.a по абсолютному пути?
Потому что ты сказал ему это сделать. Скорее всего, вы набрали
# There were some rules that build your own .a libs
myLib.a: ...
...
# Handy rule to direct your libs into lib/ folder!
vpath %.a /mypath/lib
appName: appName.o libm.a
g++ $^ -o $@
Упс! Вам нужна «система» libm.a
(это математическая библиотека, часть glibc), но make
считает, что вам нужна ваша собственная статическая библиотека. Затем он добавляет правильный префикс и не находит никаких правил для переделки libm.a
.
Решение может переместить libm.a
из предварительных условий. Это цель скрипта настройки или специальной цели make sanity
для проверки существования системных библиотек.
EXT_LIBS=libm.a
appName: appName.o
g++ $^ $(EXT_LIBS) -o $@