Linux下编译时出现的错误及解决方法

系统 Linux
(1)由于是Linux新手,所以现在才开始接触线程编程,照着GUN/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<pthread.h>

(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实用命令-pv: 管道查看器
  2. linux大扫盲:linux之Tar命令常用参数
  3. linux定时器的使用
责任编辑:赵宁宁 来源: chinaitlab
相关推荐

2011-05-07 10:05:17

打印机白条解决方法

2013-12-12 17:08:27

Linux解决办法

2011-04-27 13:21:59

SQL Serverattach

2011-09-06 16:04:59

Ubuntu

2012-08-15 14:01:18

2009-12-14 10:51:12

路由器配置

2011-09-19 19:21:54

linux

2011-08-30 13:48:50

phpmyadmin

2011-07-04 10:56:10

Qt 移植 编译

2010-11-08 14:14:12

安装SQL Serve

2010-01-05 18:03:57

2011-08-22 15:39:38

Linux

2013-09-26 15:38:27

iPhoneiOS7

2010-06-21 09:54:50

Linux Aplay

2010-06-01 15:58:14

SVN错误

2011-11-24 13:27:17

linux服务器故障排除

2021-06-17 08:07:35

Linux 内存站岗

2011-07-04 10:09:19

Qt Creator BUG

2010-10-19 10:25:29

SQL Server连

2010-06-17 10:32:13

开机显示Grub
点赞
收藏

51CTO技术栈公众号