错误-sem_union的存储大小未知问题的解决方法

错误:sem_union的存储大小未知问题的解决方法

本文主要介绍错误:sem_union存储大小未知问题的解决方法。有需要的朋友可以参考一下。

今天编译代码时,系统提示您一个错误:“sem_union”的存储大小未知。

原因:新版本2.6内核中已经注释了union sem_union,所以需要自己编写这个union。

解决方法:先在C文件中定义:

联盟色蒙

{

int val

struct semid _ ds * buf

无符号短*数组;

} sem _ union

然后它可以在编译时找到预定义的sem_union复合体。

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

(1)因为我是Linux新手,现在刚开始接触线程编程。我根据GUN/Linux编程指南中的一个例子进行输入和编译,结果出现以下错误:

未定义对“pthread_create”的引用

未定义对“pthread_join”的引用

问题的原因:

pthread库不是Linux系统的默认库,连接时需要使用静态库libpthread.a。所以在使用pthread_create()创建线程,调用pthread_atfork()函数构建fork处理程序时,需要链接这个库。

解决问题:

在编译中添加-lpthread参数。

gcc -o螺纹thread . c-LP螺纹

Thread.c为您提供了一些源文件。不要忘记添加头文件# includepthread.h。

(2)警告:隐式声明不兼容的内置函数strlen,隐式声明不兼容的内置函数exit

原因:因为函数strlen在string中,出口在stdlib中。头文件string.h和stdlib没有添加到文件中。

解决方案:在文件中添加头文件string.h和stdlib。

(3)出现错误:sem_union的存储大小未知。

原因:union sem_union联合体已经在新版本2.6内核中进行了注释,需要自己编写这个联合体。

解决方法:先在C文件中定义。

union semun { int valstruct semid _ ds * buf无符号短*数组;} sem _ union

然后它可以在编译时找到预定义的sem_union复合体。

错误-sem_union的存储大小未知问题的解决方法