在写激光雷达程序的时候,考虑到后期还要综合其他的很多文件,所以想到用CMakeLists文件来管理这个工程,在刚写好对激光雷达的数据获取和转换为指教坐标系下点坐标时出现了点小问题:
CMakeFiles/main.dir/main.o:在函数‘main’中:
main.c:(.text+0x235):对‘cos’未定义的引用
main.c:(.text+0x275):对‘sin’未定义的引用
collect2: error: ld returned 1 exit status
make[2]: *** [src/main] 错误 1
make[1]: *** [src/CMakeFiles/main.dir/all] 错误 2
make: *** [all] 错误 2
我发现用make指令去编译c文件时会出现上面的错误,而且已经包含了math.h文件。然后上网查找各种资料,没有解决的办法,因为很多人都是用gcc指令编译的,后面添加一个-lm 命令符就行,经查找发现这是指向cos函数的包含路径的问题,表示告诉编译器到libm.so库文件中找这个函数,通常在/lib中。由此启发,我这里也是找不到math的包含路径,所以在src的CMakeLists文件中添加这条路径的,以找到依赖:
TARGET_LINK_LIBRARIES(main liburg.a libm.so)
再make就不会出错了。
原文链接:https://www.f2er.com/ubuntu/351821.html