tl; dr Это невозможно [2].Это особенность.
Я углубился в исходный код GCC , его историю и документацию collect2 , и пришел к выводучто на основе этих документов ожидается, что real-ld
будет иметь приоритет над всеми другими двоичными файлами [1].
Однако логика поиска real ld, когда -fuse-ld=...
включено, расплывчато и не отражено в документации ...
Исходя из исходного кода, насколько я понимаю язык C, функция -fuse-ld=...
эффективна только тогда, когда collect2 пытается найти ld
.
[1] Единственное исключение - когда GCC компилируется с --with-ld=...
, но только для не кросс-компиляторов.Это ничего не дает, если нельзя перестроить GCC (или использовать кросс-компилятор).
[2] Не совсем верно.Просто пришла хакерская идея создать собственный real-ld
, который будет исполнять ld.gold
, и изменить путь поиска компилятора (используя -B
вместо -fuse-ld=...
):
$ cat /path/to/real-ld/real-ld
#!/bin/sh
exec ld.gold "$@"
$ gcc -B /path/to/real-ld/ ...