Как заставить уже установленный gcc-ar использовать конкретную версию binutils?

Я собрал GCC 4.9.3 из исходников и установил в свой домашний каталог с некоторым префиксом, например gcc4.9,

Теперь я хочу использовать более новую версию binutils вместе с GCC 4.9.3. Я собрал их и установил отдельно в своем домашнем каталоге с префиксом binutils2.26,

Как я могу заставить gcc-ar от gcc4.9 использовать ar от binutils2.26 вместо системы один? Всегда звонит /usr/bin/ar и похоже, что нет вариантов для указания. Замена /usr/bin/ar как-то не вариант — у меня нет root-доступа на этой машине.

0

Решение

Используйте GCC -B пометить и указать на каталог, который содержит ar Вы хотите выполнить. Увидеть Руководство GCC для более подробной информации об этом флаге.

gcc-ar -B/path/to/your/dir ...

Кажется, работает для меня:

$ strace -f -eexecve gcc-ar rc foo.a /dev/null |& grep /ar
[pid 14485] execve("/usr/lib/gcc/x86_64-pc-linux-gnu/5.3.0/../../../../x86_64-pc-linux-gnu/bin/ar", [...]) = 0
$ strace -f -eexecve gcc-ar rc foo.a /dev/null -B/usr/bin |& grep /ar
[pid 14493] execve("/usr/bin/ar", [...]) = 0
$ strace -f -eexecve gcc-ar rc foo.a /dev/null -B/usr/x86_64-pc-linux-gnu/binutils-bin/2.26/ |& grep /ar
[pid 14500] execve("/usr/x86_64-pc-linux-gnu/binutils-bin/2.26/ar", [...]) = 0
2

Другие решения

Мне удалось исправить эту проблему.

С помощью strace, Я нашел это gcc-ar ищет ar в нескольких каталогах, в том числе <gcc install dir>/libexec/gcc/x86_64-redhat-linux/4.9.3,

Таким образом, очевидным решением является создание ссылок в этом каталоге, ориентированных на соответствующие binutils2.26 исполняемые файлы:

  cd "<gcc install dir>/libexec/gcc/x86_64-redhat-linux/4.9.3"for file in ~/binutils2.26/bin/* ; do ln -s "${file}" ; done

После этого все, исполняемые файлы в ~/binutils2.26/bin будет реплицироваться как ссылки в каталоге GCC 4.9.3 и будет использоваться автоматически при сборке с помощью этой версии GCC.

1

По вопросам рекламы [email protected]