Если вы кросс-компилируете что-либо, что имеет больше зависимостей, чем libc (glibc), это становится намного сложнее. Вы должны уже кросс-компилировать все зависимости. А кросс-компиляторный инструментарий и все вспомогательные программы и скрипты должны знать, как найти эти зависимости (кросс-скомпилированные библиотеки и заголовки).
Вам необходимо иметь уже скомпилированный libogg (и его зависимости) и установить их в корневой каталог кросс-компиляции. Заголовки и библиотеки из вашей системы сборки нельзя использовать для системы хоста (arm7). Они должны храниться отдельно.
Кроме того, если вы хотите иметь совместно используемые библиотеки объектов (* .so), а не только статические библиотеки, тогда возникает целый ряд новых сложностей. Например, хотя кросс-компиляторный набор инструментов содержит кросс-скомпилированный libc как часть набора инструментов, вам все равно нужен libc для хост-системы. Для этого можно использовать libc, который является частью цепочки инструментов, но его структура отличается от структуры хоста. Иногда люди копируют и переупорядочивают файлы, но часто люди просто компилируют и устанавливают новый glibc для рута.
В любом случае, все, что нужно сказать, две ошибки, которые вы видите, потому что скрипт configure не может найти кросс-скомпилированную библиотеку libogg. Если вы этого еще не сделали, вам нужно сделать кросс-компиляцию libogg (и зависимостей) и установить их в целевой корень. Затем вам нужно указать скрипту configure, где ваши кросс-скомпилированные заголовки (да, заголовки зависят от архитектуры) и библиотеки находятся в целевом корне. Обычно используют CFLAGS, LDFLAGS, CXXFLAGS и т. Д. (НЕ --prefix), но могут быть и другие переменные окружения, которые вам нужно также установить, чтобы они влияли на такие вещи, как pkg-config и т. Д. После того, как вы построили каждую зависимость, вам нужно получить makefile для установки зависимости от рута. Обычно это делается с make DESTDIR=[root] install
, но некоторые make-файлы имеют свой собственный механизм (или не имеют надлежащего альтернативного механизма установки).
Вам также может потребоваться переопределить некоторые проверки конфигурации (с использованием переменных среды), которые плохо написаны и не имеют хороших параметров кросс-компиляции по умолчанию. Эти переменные обычно начинаются с ac_cv _ *
Итак, основной процесс состоит в том, чтобы сделать это для нужных вам пакетов (в порядке зависимости):
export CFLAGS=-I[root]/usr/include LDFLAGS=-L[root]/usr/lib CXXFLAGS=-I[root]/usr/include
export ac_cv_[test1]=[yes|no] ac_cv_[test2]=[yes|no] ...
./configure --host=[arm7-blah-blah]
make
make DESTDIR=[root] install
Удачи. Как только вы почувствуете себя комфортно со стандартным кросс-компилированием, вы будете готовы принять настоящее черное искусство, канадский крест ; -)