Ubuntu, opencv и связывание

Я установил Ubuntu несколько дней назад и использовал apt -get для установки сборки _Essentials, opencv, highgui и т. д. g++ — 4.6.1, opencv — 2.1.0. Я не собирал opencv из исходников.

У нас есть программное обеспечение, использующее функциональность opencv. Предположим, исходные файлы называются a.cpp и b.cpp. Я компилирую в a.o и b.o, а затем помещаю их в библиотеку.so (, назову ее libab.so ).

Наконец, есть файл с main в нем (назовем его z.cpp ). Я пытаюсь создать из него исполняемый файл, но получаю массу ошибок «неопределенная ссылка» на материал cv ::. Моя строка ссылки выглядит примерно так :

g++ -fPIC -g z.cpp -L../lib -lab -lml -lcvaux -lhighgui -lcv -lcxcore -o z.out

, затем я получаю неопределенные ссылки на ошибки (, все из которых относятся к cv ::stuff ).

Самое интересное, что если я напрямую связываюсь с моими файлами.o, все строится нормально. Так что это:

g++ -fPIC -g z.cpp a.o b.o -lml -lcvaux -lhighgui -lcv -lcxcore -o z.out

работает.

Все, что я читал, похоже, подразумевает, что это, вероятно, проблема с заказом ссылки -строки -,но я пробовал все упорядоченные перестановки и получаю ту же проблему, поэтому я действительно не думаю, что это моя проблема, но я все еще могу ошибаться. У кого-нибудь есть идеи, как я могу заставить это собраться с моей библиотекой, и почему это будет действовать по-другому, если я успешно соберу полный набор файлов.o, которые есть в библиотеке, но не могу собрать с самой библиотекой?

5
задан Horizon1710 14 November 2018 в 13:08
поделиться