Linux下编译代码错误: undefined reference to symbol 'cos@@GLIBC_2.2.5' //lib/x86_64-linux-gnu/libm.so.6: err

首先给出错误截图:
Linux下编译代码错误: undefined reference to symbol 'cos@@GLIBC_2.2.5' //lib/x86_64-linux-gnu/libm.so.6: err_第1张图片

给出我的makefile文件

LIB:= -lopencv_highgui -lopencv_core -lopencv_imgproc -lopencv_legacy  -lstdc++ 
CXX:=gcc
main : lsd.c lsd_cmd.c main.cpp 
    $(CXX) -o main  lsd_cmd.c  lsd.c main.cpp  $(LIB)

这个makefile文件同事编译了.c和.cpp文件代码,这里要记录一下,gcc编译器进行C和Cpp混合编译的注意事项:引用一篇博客截图;
Linux下编译代码错误: undefined reference to symbol 'cos@@GLIBC_2.2.5' //lib/x86_64-linux-gnu/libm.so.6: err_第2张图片
在我的代码中,这样的应用

#ifdef __cplusplus
extern "C" {
#endif

    double* LSD(double*parameter_D,const char ** parameter_S, double *image, int*nn, int X, int Y);  //这里写函数声明

#ifdef __cplusplus
}
#endif

好了,最后回归主题:错误怎么结局,就是在$(LIB)前面加上-ml具体原因我也不知道,有知道的可以在评论区解释一下,学习学习。

LIB:= -lopencv_highgui -lopencv_core -lopencv_imgproc -lopencv_legacy  -lstdc++ 
CXX:=gcc
main : lsd.c lsd_cmd.c main.cpp 
    $(CXX) -o main  lsd_cmd.c  lsd.c main.cpp -ml $(LIB)

你可能感兴趣的:(linux)