本文主要介绍错误: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复合体。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。