Кросс-компиляция библиотек, которые динамически или статически связаны с системными библиотеками - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь выполнить кросс-компиляцию некоторых библиотек зависимостей для RaspberryPi целевой системы, а хост-система - Linux с GCC компилятором.Например, предположим, что одна из этих библиотек зависит от стадии связывания и связана с одной из статических или динамических библиотек системы.Как этот случай разрешается компоновщиком?(Поскольку эти файлы .a или .so могут отличаться в целевой системе, поэтому, вероятно, в этом случае произойдет сбой программы на RaspberryPi ).Как заставить его работать правильно?

1 Ответ

0 голосов
/ 03 октября 2018

Среда сборки, которую обеспечивает кросс-компилятор, более точно описывается как кросс-цепочка инструментов .Он должен предоставлять все, что вам нужно: не только компилятор, но также ассемблер, компоновщик и все библиотеки поддержки времени выполнения.Это включает в себя библиотеку C (может быть, glibc, может быть что-то еще), библиотеку времени выполнения GCC (libgcc и libgcc_s) и библиотеку времени выполнения C ++ (libstdc ++).Но среде сборки также нужны копии всех библиотек, которые нужны вашему программному обеспечению, обычно как заголовочные файлы, так и статические библиотеки или динамические общие объекты для цели.В частности, вы не можете использовать установленные заголовочные файлы на хосте, потому что они могут иметь неправильные определения и объявления для цели.

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

...