#c #opencv #arm #static-libraries
#c #opencv #arm #статические библиотеки
Вопрос:
Я надеюсь, что кто-нибудь сможет мне помочь. У меня есть файл c , в котором используются библиотеки opencv. Мне нужно получить исполняемый файл для ARM, в котором я должен его запустить. Мой исполняемый файл должен быть скомпилирован статическим компоновщиком.
Я не эксперт, поэтому извините, если я делаю что-то странное, я следую этим шагам:
Я загружаю opencv для библиотек ARM, собираю его с помощью cmake и без проблем получаю статические библиотеки ARM opencv.
Затем я пытаюсь скомпилировать свой файл c следующим образом:
arm-linux-g -static -o exampleWindows IPCamera.cpp `pkg-config --cflags --libs opencv`
И это работает, поэтому я получил исполняемый файл, я пишу:
file executable
И я получаю этот вывод:
ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.26, not stripped
Итак, кажется, что все в порядке, это формат ARM и статическая ссылка. Но когда я пытаюсь запустить этот исполняемый файл в моем ARM, появляется эта ошибка:
OpenCV Error: Unspecified error (The function is not implemented.
Rebuild the library with Windows, GTK 2.x or Carbon support.
If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config,
then re-run cmake or configure script) in cvNamedWindow,
file /home/jesus/opencv/opencv/modules/highgui/src/window.cpp, line 483
terminate called after throwing an instance of 'cv::Exception'
what(): /home/jesus/opencv/opencv/modules/highgui/src/window.cpp:483: error: (-2) The function is not implemented.
Rebuild the library with Windows, GTK 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config,
then re-run cmake or configure script in function cvNamedWindow
Затем, поскольку я не эксперт, я попытался следовать тому, что говорится в сообщении об ошибке, поэтому я не загружаю libgtk2.0 в свою ubuntu, а затем снова создаю cmake и создаю для сборки статических библиотек ARM, но ничего не решается.
Итак, мне нужна помощь с этой ошибкой или скажите, в чем смысл, потому что кажется, что это просто, но я не знаю, что делать.
Вот мой код:
#include <iostream>
#include <pthread.h>
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv/highgui.h>
#include <string.h>
#include <stdio.h>
#include <time.h>
using namespace std;
using namespace cv;
int main()
{
cout<<"ready"<<endl;
cv::Mat frame;
cv::namedWindow("front", CV_WINDOW_NORMAL);
cvMoveWindow("front", 0, 0);
cvSetWindowProperty( "front", CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN);
return 0;
}
Большое вам спасибо, я надеюсь, что кто-нибудь сможет мне помочь.
Ответ №1:
Проблема в том, что вам нужно перестроить OpenCV с активированной поддержкой GTK. Необходимые шаги:
- Установите gtk (
sudo apt-get install libgtk2.0-dev
, я думаю, вы это уже сделали ;)). - Перестроить OpenCV:
- Если вы установили его из репозиториев, переустановите его (я думаю, что это не так).
- Если вы вручную создали OpenCV из исходного кода: запустите cmake с ним еще раз, убедившись, что опция WITH_GTK отмечена (вы можете использовать CMAKE GUI для активации этой опции).
Как только файлы Makefile будут повторно сгенерированы с помощью CMAKE, запустите
make
make install
и не забудьтеldconfig
. - Повторите попытку с вашим кодом 😉
Надеюсь, что это поможет!
Комментарии:
1. Спасибо за ваш ответ, Кейлл, это было так ясно. Я сделал все, что вы сказали, и снова та же ошибка, я искал какое-то решение, и я обнаружил, что, возможно, мне нужно установить больше библиотек перед make, но я это сделал, и я упрекнул cmake, и ничего. Я проверяю в CmakeCache.txt и флаг WITH_GTK=ВКЛЮЧЕН, так что я понятия не имею, в чем может быть проблема. Еще раз спасибо за ответ.
2. Я понял, что, как только я закончу выполнение Cmake, в выводе терминала появится GTK 2.x: НЕТ, поэтому я думаю, что это неправильно, но я понятия не имею, почему.
3. Вы должны попробовать использовать
cmake-gui
, чтобы узнать, правильно ли cmake (opencv) находит путь gtk4. Привет, Кейлл, спасибо за ваш ответ. Я никогда не использовал cmake-gui, где я могу найти эту информацию??
5. В Ubuntu:
sudo apt-get install cmake-gui
Ответ №2:
Проблема связана с тем, что вы не включили поддержку библиотеки GTK . Чтобы включить его
1) установите библиотеки GTK , если у вас их нет
2) перестроить библиотеки, включая this -DWITH_GTK=ON
надеюсь, что это сработает…
Ответ №3:
- запустите
ccmake .
и включитеWITH_GTK
иWITH_GTK_2_X
- выполнить
make amp;amp; make install
- ldconfig