Linux编程常见错误及解决方案
2015-11-03 00:00
232 查看
对于linux新手来说Linux编程会经常遇见一些问题,今天列出新手们最经常遇到的编程错误,并提供解决方案:
1)由于是Linux新手,所以现在才开始接触线程编程,照着GUN/Linux编程指南中的一个例子输入编译,结果出现如下错误:
undefined reference to 'pthread_create'
undefined reference to 'pthread_join'
问题原因:
pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,需要链接该库。
问题解决:
在编译中要加 -lpthread参数
gcc -o thread thread.c -lpthread
thread.c为你些的源文件,不要忘了加上头文件#include
(2)出现警告:内建函数strlen不兼容的隐式声明,内建函数exit不兼容的隐式声明
问题原因:因为函数strlen在string内,exit在stdlib内。在文件中没有添加头文件 string.h和stdlib
问题解决:在文件中添加头文件 string.h和stdlib
(3)出现错误:sem_union的存储大小未知
问题原因:在新版2.6内核中关于union sem_union 这个联合体已经被注释了,需要自己写这个联合体
问题解决:在C文件中先定义
union semun {int val; struct semid_ds *buf; unsigned short *array;} sem_union;
随后编译时它就能找到预先定义好的sem_union联合体了。
1)由于是Linux新手,所以现在才开始接触线程编程,照着GUN/Linux编程指南中的一个例子输入编译,结果出现如下错误:
undefined reference to 'pthread_create'
undefined reference to 'pthread_join'
问题原因:
pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,需要链接该库。
问题解决:
在编译中要加 -lpthread参数
gcc -o thread thread.c -lpthread
thread.c为你些的源文件,不要忘了加上头文件#include
(2)出现警告:内建函数strlen不兼容的隐式声明,内建函数exit不兼容的隐式声明
问题原因:因为函数strlen在string内,exit在stdlib内。在文件中没有添加头文件 string.h和stdlib
问题解决:在文件中添加头文件 string.h和stdlib
(3)出现错误:sem_union的存储大小未知
问题原因:在新版2.6内核中关于union sem_union 这个联合体已经被注释了,需要自己写这个联合体
问题解决:在C文件中先定义
union semun {int val; struct semid_ds *buf; unsigned short *array;} sem_union;
随后编译时它就能找到预先定义好的sem_union联合体了。
相关文章推荐
- centos linux从无到有安装wordpress
- centos免密码登陆
- Linux命令(持续更新)
- Linux 常用命令
- CentOS-7下安装MySQL5.6.22
- Linux seq 命令
- 在ubuntu14.04下搭建和配置wordpress
- CentOS备忘
- linux驱动程序基础
- linux命令基本功之mkdir
- 每天学一点linux(三)
- linux 常用基础命令 cd 详细介绍
- linux fork.c
- linux分区建议
- (错误处理)使用u盘安装centos后无法进入系统,开机启动项选择在U盘了
- Linux 更新apt-get源 出现错误
- linux 清空文件内容若干方法
- Linux之top命令......
- linux常用命令chmod,chown,chgrp
- CentOS下配置ssh免密码登录