2013-06-21 2 views
6

У меня возникли проблемы с подтверждением моего понимания того, как работает ссылка rpath при перекрестном компиляции с определенной цепочкой инструментов, которую я использую (хотя я думаю, что это общий вопрос, который применяется к кросс-компиляции вообще).Как используется ссылка rpath в кросс-компиляции?

Когда я смотрю на то, что флаги передаются компилятора и компоновщика при создании библиотек и приложений, я вижу следующие в компоновщик:

-Wl,-rpath-link,/home/Dev/env/sys/crosscompiletoolchain/armle-v7/lib/ 

Так что это путь встраиваются в общий библиотеки для целевого устройства на моей машине разработки. Это имеет смысл, потому что я буду делать окончательную привязку на машине разработки до развертывания на устройстве. Когда я, наконец, развернусь на устройстве (то есть, shared libs + application), не будут ли эти общие библиотеки иметь бесполезную ссылку rpath?

Встроенные библиотеки и приложения, похоже, работают нормально на цели независимо, и если мне придется догадаться, я бы сказал, потому что приложение имеет среду, предоставляемую операционной системой устройства, которая имеет/lib/как один из его пути поиска библиотеки по умолчанию (rpath-link определяет только первый набор dirs для поиска). Это верно?

ответ

12

Check "Использование LD, ГНУ компоновщика - Параметры - GNU Project Archives" (ftp.gnu.org/pub/old-gnu/Manuals/ld-2.9.1/html_node/ld_3.html):

Разница между -rpath и -rpath-связи в том, что каталоги, указанные опциями -rpath включены в исполняемый файл и используется во время выполнения, тогда как опция -rpath-link эффективна только во время соединения.