Почему параметр -r (перемещаемый) заставляет ld не находить никаких библиотек?

Запуск Debian / Linux x86_64 с GNU ld 2.21.

Очень просто, если я свяжусь с

ld -o main main.o /usr/lib/crti.o /usr/lib/crt1.o /usr/lib/crtn.o -lc -lm

, он работает, но когда я свяжусь с

ld -r -o main1.o main.o /usr/lib/crti.o /usr/lib/crt1.o /usr/lib/crtn.o -lc -lm

, он жалуется

ld: cannot find -lc
ld: cannot find -lm

На самом деле я не пытаюсь скомпилировать код таким образом, я скорее пытаюсь выяснить, почему чужой тест на наличие библиотеки не работает. (Таким образом, я действительно не понимаю, что происходит с ld ... обычно я просто использую GCC для ссылки)

Зачем сообщать ld ссылку в перемещаемом режиме make он вдруг не может найти библиотеки? Если я просто хочу проверить, существует ли -lm , что мне делать помимо

ld -r -lm

, чтобы он нашел библиотеку?

Если вы хотите увидеть источник, с которым я имею дело, вы можете скачать его здесь: https://github.com/jeremysalwen/ESPS (обратите внимание, что первая фиксация - это исходный исходный код, а последующие изменения - это изменения, внесенные мной лично)

5
задан Jeremy Salwen 7 July 2011 в 09:08
поделиться