Я пытаюсь кросс-компилировать библиотеку OpenCV для ее использования во встроенной системе под управлением Montavista Linux (в системе установлен процессор ARM926). Мне удалось настроить и сгенерировать make-файлы; источники собраны нормально, в том числе сторонние библиотеки. Проблема приходит во время ссылки. По какой-то причине libtool выбирает некоторые библиотеки из хост-системы (libjpeg, libtiff, libpng) и пытается связать их с объектными файлами ARM9 (что явно неверно). Я получаю ошибку
/ usr / lib / libpng12.so: не удалось прочитать символы: файл в неправильном формате .
Я не мог и до сих пор не могу понять, что именно не так с моей установкой (я даже пытался собрать библиотеку непосредственно в системе ARM9, но, к сожалению, у нее очень мало оперативной памяти и дросселей gcc). Я также изменил LD_LIBRARY_PATH envvar, чтобы он содержал системные библиотеки цели, и экспортировал его перед запуском configure и make.
Вот что я передаю для настройки:
LDFLAGS="-L/opt/Montavista/pro/devkit/arm/v5t_le/target/usr/lib" CFLAGS="-I/opt
/Montavista/pro/devkit/arm/v5t_le/target/usr/include -fsigned-char -march=armv5te
-mtune=arm926ej-s -ffast-math -fomit-frame-pointer -funroll-loops" CC=/opt/Montavista
/pro/devkit/arm/v5t_le/bin/arm_v5t_le-gcc CXXFLAGS="-fsigned-char -march=armv5te
-mtune=arm926ej-s -ffast-math -fomit-frame-pointer -funroll-loops" CXX=/opt/Montavista
/pro/devkit/arm/v5t_le/bin/arm_v5t_le-g++ ./configure --host=armv5tl-montavista-linux-
gnueabi --without-gtk --without-v4l --without-carbon --without-quicktime --without-
1394libs --without-ffmpeg --without-imageio --without-python --without-swig --enable-
static --enable-shared --disable-apps --prefix=/home/dev/Development/lib
Я нашел этот вопрос на SO, но, к сожалению, он не дает мне решения.
Я использую gcc версии 4.2.0 (MontaVista 4.2.0-16.0.32.0801914 2008-08-30) в Montavista Linux for ARM (плата Leopard с питанием от TI DM365), OpenCV 2.0.0. Моя хост-система - Ubuntu 10.4.
Любые указания о том, как решить эту проблему, очень помогли бы.
Спасибо
[ОБНОВЛЕНИЕ] [ИСПРАВЛЕНО] : Метод создания make-файлов для OpenCV 2.0.0, основанный на автоинструментах, кажется, сломался при попытке кросс-компиляции (или по какой-то странной причине он не работал для меня ). Я использовал графический интерфейс CMake и указал правильный файл toolchain.cmake, и все прошло гладко. Смотрите ответ ниже.