Неопределенная ссылка на PCM :: getInstance () - PullRequest
0 голосов
/ 19 сентября 2018

Прежде чем задать новый вопрос, я прочитал несколько или более вопросов по этому поводу, но я все еще путаюсь.

Я компилирую свою программу с помощью:

g ++ -std =c ++ 11 -Wall -O3 -fopenmp main.cpp -o main -D WITH_COUNTER -I / usr / local / src / pcm -L / usr / local / src / pcm -L / usr / local / lib

Затем я обнаружил ошибку:

main.cpp :(. Text.startup + 0x27e): неопределенная ссылка на PCM :: getInstance ()

main.cpp :(. text.startup + 0x289): неопределенная ссылка на PCM :: resetPMU ()

main.cpp :(. text.startup + 0x310): неопределенная ссылка на PCM :: program (PCM:: ProgramMode, void const *)

Итак, кто-нибудь может объяснить мне, как решить эту проблему?

1 Ответ

0 голосов
/ 19 сентября 2018

На самом деле вы не связываетесь с самими библиотеками.

Опция -L указывает компоновщику добавить каталог к ​​его пути поиска, но компоновщик не будет проходить через все библиотеки на своем путичтобы найти, что может быть правильным (их могут быть сотни или даже тысячи).

Вместо этого вам нужно явно указать библиотеки для связи с использованием опции -l (строчные буквы L).

Для некоторого примера библиотеки foo будет существовать файл с именем libfoo.a или libfoo.so.Для связи с ним вы используете -lfoo.

Если документация для вашей библиотеки не говорит вам, с какой библиотекой вы должны связать, найдите подходящий именованный файл (как упомянуто выше) и используйте правильный параметрсвязаться с библиотекой.

...