2017-01-08 1 views
-1

Когда я делаю фазу связи в компиляции C++ для создания исполняемого файла, мне часто нужно использовать флаг -l для связывания нескольких библиотек. Например,Как узнать зарегистрированное имя библиотеки в компиляции C++

-lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_videoio -lsigc-2.0 -lglibmm-2.4 -lglib-2.0 -lstdc++ -lncurses -lflycapture 

Вопрос: Как узнать имена этих библиотек в первую очередь? Например, если я хочу использовать библиотеку opencv/highgui.h, откуда я узнаю, что это имя opencv_highgui вместо opencv-highgui? Есть ли какие-либо команды, которые я могу использовать, чтобы выяснить, какие библиотеки были зарегистрированы в системе Linux? Благодаря!

+1

Не зарегистрированы в любом случае. Они просто находятся в каталогах, определенных вашим пути к библиотеке. Вы можете просто перечислить файлы в этих местах. И вы знаете имена, потому что вы используете библиотеки, и документация говорит, какие из них вы используете. –

+0

Вы спрашиваете, как узнать, какие библиотеки должны быть связаны? – DyZ

+0

Отредактировал вопрос. Прошу прощения за путаницу. –

ответ

0

Если функция, которую вы пытаетесь использовать, не находится в какой-либо «стандартной» библиотеке, вы получите ошибку компоновщика, сообщающую о недостающем имени функции. Прочтите страницу руководства для функции (например, man crypt для функции crypt). Название библиотеки обычно упоминается на странице:

Ссылка на -lcrypt.

Смежные вопросы