Я установил openCV по ссылке, указанной ниже:
https://help.ubuntu.com/community/OpenCV#aStep_1
Установка прошла гладко, теперь, когда я собираю свою тестовую программу:
используя следующую команду:
opencv openCVtest.cpp
это выдает мне следующую ошибку:
compiling openCVtest.cpp
g++: error: missing argument to ‘-l’
Output file => openCVtest
Я посмотрел сценарий, который я использую для компиляции (его дано Вот )
и увидел эту конкретную строку, которая будет использоваться для компиляции моего кода C ++:
g++ -ggdb `pkg-config --cflags opencv` -o `basename $1 .cpp` $1 `pkg-config --libs opencv`;
Я понимаю, что «-l» запрашивает некоторые библиотеки, но я думаю, что я не должен передавать в этот скрипт ничего, кроме моего кода.
PS вот деталь того, что выполнено в этой строке:
hduser@ishan-Notebook-PC:~/Documents/OpenCv$ echo g++ -ggdb `pkg-config --cflags opencv` -o `basename opencvtest.cpp .cpp` opencvtest.cpp `pkg-config --libs opencv`
g++ -ggdb -I/usr/include/opencv -I/usr/include/opencv2 -o opencvtest opencvtest.cpp -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy -l
Не могли бы вы, ребята, помочь мне разобраться, что именно я делаю не так?
Спасибо !
ОБНОВИТЬ
Я обнаружил, что мой файл opencv.pc, содержащий дополнительный «-l», я удалил этот флаг, и вышеуказанные ошибки исчезли:
содержимое файла opencv.pc:
prefix=/usr
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib
Name: opencv
Description: The opencv library
Version: 2.x.x
Cflags: -I${includedir}/opencv -I${includedir}/opencv2
Libs: -L${libdir} -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy -l
Обратите внимание на дополнительные «-L» в последней строке.
Однако теперь я получаю следующую ошибку:
openCVtest.cpp:1:39: fatal error: opencv2/highgui/highgui.hpp: No such file or directory
#include "opencv2/highgui/highgui.hpp"
Кажется, что pkg-config
возвращает еще один -l
в конце.
Вы можете попробовать запустить команду без нее вручную:
g++ -ggdb -I/usr/include/opencv -I/usr/include/opencv2 -o opencvtest opencvtest.cpp -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy
Обновить:
Для второго возникшего вопроса попробуйте использовать пути включения без opencv
а также opencv2
каталоги.
Итак, вместо этого:
Cflags: -I${includedir}/opencv -I${includedir}/opencv2
Попробуй это:
Cflags: -I${includedir}
Других решений пока нет …