Это зависит от вашего Makefile
(который вы можете отладить с помощью remake
-x
).Обратите внимание, что make
имеет много встроенных правил.Используйте make -p
, чтобы также распечатать их.Обратите внимание на правила, в которых упоминаются LINK.c
или LINK.cc
и т. Д., И обратите внимание, что LD
мало используется.Обратите также внимание на то, что ld
почти никогда не используется напрямую (в большинстве случаев какая-то другая программа, например gcc
или g++
запускает его).
И это также вопрос PATH
переменная .Поэтому попробуйте установить его так, чтобы ваш новый ld
предшествовал старому.
Как правило, вы связываетесь с программой gcc
или g++
(поэтому значение имеет GCC ., не make
; читайте о Вызов GCC и его -fuse-ld=
), и что gcc
или g++
будет запускать компоновщик (вы можете, но я неРекомендуется изменить его spec-файл , который определяет, какие фактические программы запускаются gcc
или g++
, которые являются только драйверами , на другие программы, такие как cc1
, as
, ld
, collect2
и т. Д.).Чтобы понять, какие программы gcc
или g++
запущены, передайте ему флаг -v
.
Но "make" все еще использует "/ usr / bin /x86_64-linux-gnu-ld "(то есть 2.24) и по-прежнему выдает ту же ошибку.
В моей системе Debian /usr/bin/x86_64-linux-gnu-ld
(обычно она запускается gcc
, а не напрямую make
) является символической ссылкой.Вы можете (но я не рекомендую это) просто изменить эту символическую ссылку.
Кстати, вы используете древнюю Ubuntu 14. Вам лучше обновить весь дистрибутив (например, до Ubuntu 18.04.1 LTS на конец 2018 года), потому что в вашей системе есть не только ld
, но и много других действительно старых программ.
Обновление вашего дистрибутива займетменьше времени, чем на обновление, компиляцию, установку и настройку каждого отдельного инструмента.