Ubuntu下使用make编译c文件,不能调用sin cos 等函数问题的解决
2017-08-07 11:07
791 查看
在写激光雷达程序的时候,考虑到后期还要综合其他的很多文件,所以想到用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就不会出错了。
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就不会出错了。
相关文章推荐
- ubuntu 10.04 编译安装 vim 7.3, 解决 vim 不能使用系统剪贴板问题
- Ubuntu下使用gcc编译c文件,未识别cos,sin
- Android源码编译之后G-Sensor不能使用问题的解决
- C中关于sin(),cos(),pow()函数使用的一个问题
- 终于解决了MDK 3.80a中不能使用printf()函数的问题
- 解决ubuntu中vi不能正常使用方向键与退格键的问题
- 解决ubuntu中vi不能正常使用方向键与退格键的问题
- 解决Ubuntu Server 12.04 在Hyper-v 2012 R2中不能使用动态内存的问题
- 解决Ubuntu Server 12.04 在Hyper-v 2012 R2中不能使用动态内存的问题
- Ubuntu 13.04下解决与虚拟机共享不能使用的问题
- ubuntu7.10下编译linux kernel 2.6.23.1之make menuconfig问题解决
- 解决ubuntu中vi不能正常使用方向键与退格键的问题
- 【超佩服】解决ubuntu系统不能使用技嘉(GA)主板内置网卡(芯片R8168)的问题
- 双硬盘Win7装Ubuntu 12.04经验并解决无线网络不能使用问题
- 解决ubuntu 13.04登入系统后触摸板不能使用的问题
- ubuntu 不能使用sudo问题的解决
- CGYWIN 编译的可执行程序在WINDOWS平台中运行时,解决system函数不能使用的问题
- 使用第三方库的解决windows下Apache+PHP调用SSL函数假死问题
- 解决ubuntu中vi不能正常使用方向键与退格键的问题?
- 解决Ubuntu更新后无线网卡不能使用的问题