在我问一个新问题之前,我已经读过很少或更多的问题,但是我一直感到困惑。
我使用以下命令编译程序:
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 *)的未定义引用
那么,有人可以向我解释如何解决这个问题吗?
答案 0 :(得分:1)
您实际上并没有链接到库本身。
-L
选项告诉链接器将目录添加到其搜索路径,但是链接器不会遍历其路径中的所有库来查找哪个可能是正确的(可能有数百个甚至数千个)
相反,您需要使用-l
(小写L)选项来明确指定要链接的库。
对于某些示例库foo
,将存在一个名为libfoo.a
或libfoo.so
的文件。要与其链接,请使用-lfoo
。
如果您的图书馆文档没有告诉您应该链接到哪个图书馆,请寻找一个合适的命名文件(如上所述),并使用正确的选项与该图书馆链接。