среда, 28 марта 2012 г.

Использование GNU ld линковщика на Solaris

GCC в Solaris по умолчанию компилируется с опцией --with-ld=/usr/css/bin/ld, а значение этого параметра - адрес линковщика Solaris. К сожалению, GCC использует эту опцию поверх всех остальных, что означает он станет игнорировать переменную окружения LD, для указания альтернативного линковщика, такого как например /usr/sfw/bin/gld

К тому же, такие утилиты, как например libtool/autoconf будут поднимать вашу LD переменную с тем чтобы выяснить какие опции поддерживает линковщик, libtool, к сожалению, всё ещё вызывает GCC для стадии связывания, который будет игнорировать LD. Это делает проблематичным использование GNU ld без всяких грязных хаков типа:
mv /usr/ccs/bin/ld /usr/ccs/bin/ld.off
ln -s /usr/sfw/bin/ld /usr/ccs/bin/ld

Однако solaris ld принимает одну очень полезную переменную окружения. Эта переменная LD_ALTEXEC.

Solaris ld вызывает LD_ALTEXEC. Если вы устновите LD_ALTEXEC в '/usr/sfw/bin/gld', когда будет запущен /usr/ccs/bin/ld, он сразу выполнит /usr/sfw/bin/gld вместо себя с переданными ему параметрами. Итак, можно таки использовать любой линковщик! Ура!

[1] blogs.everycity.co.uk/alasdair/2011/03/using-the-gnu-ld-linker-on-solaris

Комментариев нет:

Отправить комментарий