ld returned 1 exit status这类问题如何处理
2015-10-12 20:53
585 查看
问题描述
编译的时候经常会报出的问题例子
异步IO的例子#include <aio.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <string.h> void main() { struct aiocb stCb; int fd = 0; int iRet = 0; fd = open("file.txt",O_RDONLY); if(-1 == fd) { perror("open"); } memset(&stCb, 0, sizeof(stCb)); stCb.aio_buf = malloc(512+1); if(!stCb.aio_buf) { perror("malloc"); } stCb.aio_fildes = fd; stCb.aio_nbytes = 512; stCb.aio_offset = 0; if(aio_read(&stCb) < 0) { perror("aio_read"); } while(EINPROGRESS == aio_error(&stCb)); if(aio_return(&stCb) > 0) { printf("OK\n"); } else { printf("error\n"); } close(fd); printf("Hello,world\n"); }
不知道连接的库,所以直接编译会出现如下错误:
linux-pm2g:/testCPro/AIO # gcc -g aio.c -o aio
aio.c: In function ‘main’:
aio.c:7: warning: return type of ‘main’ is not ‘int’
/tmp/cclS8Pwa.o: In function ‘main’:
/mnt/hgfs/E/test/testCPro/AIO/aio.c:25: undefined reference to ‘aio_read’
/mnt/hgfs/E/test/testCPro/AIO/aio.c:29: undefined reference to ‘aio_error’
/mnt/hgfs/E/test/testCPro/AIO/aio.c:30: undefined reference to ‘aio_return’
collect2: ld returned 1 exit status
解决方法
找到函数对应库的编译连接。通过man查看错误提示里的未关联函数。好,我们找到了-lrt
然后编译一下看看,到底行不行
linux-pm2g:/testCPro/AIO # gcc -g aio.c -o aio -lrt
aio.c: In function ‘main’:
aio.c:7: warning: return type of ‘main’ is not ‘int’
我们看到通过了。
类推
其他函数编译时要是出现这种情况,也可以通过同样的方式来解决。相关文章推荐
- Linux socket 初步
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝
- vivi下重新调整分区