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

今天在编译代码的时候提示 错误: ‘sem_union'的存储大小未知

问题原因:在新版2.6内核中关于union sem_union 这个联合体已经被注释了,需要自己写这个联合体.

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

union semun
{
	int val;
	struct semid_ds *buf;
	unsigned short *array;
}sem_union;

随后编译时它就能找到预先定义好的sem_union联合体了.

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联合体了。

(0)

相关推荐

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

    今天在编译代码的时候提示 错误: 'sem_union'的存储大小未知 问题原因:在新版2.6内核中关于union sem_union 这个联合体已经被注释了,需要自己写这个联合体. 解决方案:在C文件中先定义: union semun { int val; struct semid_ds *buf; unsigned short *array; }sem_union; 随后编译时它就能找到预先定义好的sem_union联合体了. Linux下编译时出现的错误及解决方法 (1)由于是Linux新

  • JavaScript 程序错误Cannot use 'in' operator to search的解决方法

    今天编程时,JavaScript 程序报了这样的错误:Cannot use 'in' operator to search for...,具体错误信息如下: 坦白说,这样的错误最难调试.因为它并不指向你所写的具体代码,而是泛泛指向了 lib.js 文件(该文件通常是第三方的打包压缩库),你几乎无法依据错误类型与错误指向来定位到实际编程中的错误位置. 怎么办? 这个时候,只有发挥"死磕"精神了! 死磕步骤: 依据故障页面以及错误信息,定位到出错的文件,这一点应该不难: 在出错的页面中,依

  • MySql服务未知原因消失解决方法

    MySql服务未知原因消失解决方法 刚才突然MySQL-Front打开不了MySql,果不其然发现是MySql的服务不见了.想起可能是昨晚安装了PhpStudy的点了不要MySql的选项,它把我本身的MYSQL服务给卸载了. 解决办法 进入到C盘下的\Windows\System32目录,在该目录下方找到cmd.exe,然后单击选中后右键,在弹出的菜单中选择"以管理员身份运行".然后进入到MySql的安装目录.这里进入还是说一说吧,必须先进入某个盘符,例如进入c盘,不能直接 cd D:

  • MySQL无法存储Emoji表情问题的解决方法分析

    本文实例讲述了MySQL无法存储Emoji表情问题的解决方法.分享给大家供大家参考,具体如下: 数据插入的时候报错: 1366 - Incorrect string value: '\xF0\x9F\x98\x81' for column 'job' at row 23 解决办法: 1.修改配置文件my.ini[D:\Program Files\MySQL\MySQL Server 5.5]: [mysql] default-character-set=utf8mb4 [mysqld] char

  • 关于“未指定的错误”的问题 的比较正解的解决方法

    搜索关键字为(和以前一样)Microsoft JET Database Engine未指定的错误 错误提示为 Microsoft JET Database Engine (0x80004005) 未指定的错误 昨天从win2003转到winxp pro版,但是在调试相册程序时,发现上面的错误,这个错误困扰我今天一天时间了,一直找不到解决方法,重装系统也不行.但程序有win2003服务器上运行正常,在网上搜索了一下,发现出现这种原因有多种,最常见的就是下面这两种. 原因系统temp文件的访问权限不

  • MySQL错误Forcing close of thread的两种解决方法

    最近网站访问量大增,可能有些频道程序也有一些问题,造成了MySQL数据库出现Forcing close of thread 28790 user错误.如果遇到这种情况改怎么解决呢?icech找到两种方法来解决: 1.修改mysql配置文件 如果配置文件是my.ini,可以在在my.ini添加下面两条内容: skip-locking skip-name-resolve 注意:在新版本的mysql中,skip-locking已经被换成了skip-external-locking,如果使用skip-l

  • startJVM错误Unable to load native library: libjvm.so解决方法

    startJVM是加载jvm用的方法.在JPype,apache mod等等很多地方都用到.但凡要用其他语言来加载jvm进程,就要用到这个. 可惜往往会出错.一般都是 复制代码 代码如下: Unable to load native library: libjvm.so: cannot open shared object file: No such file or directory 但是libjvm.so确实存在啊. 解决方法很简单: 在/etc/profile里面设置: 复制代码 代码如下

  • LoadUserProfile 调用因下列错误而宣告失败: 拒绝访问的常见解决方法

    看到LoadUserProfile这个,应当与用户有关.又是需要什么用户的权限呢? 就凭这些信息,也想不出是什么原因导致的,只能到网上找. 找了一下,原来是C:\Documents and Settings目录缺少 NETWORD SERVICE权限,说实话,要不是找,我想死了也想不出是这个权限问题. 我感觉系统出现错误时,应当把解决方法都显示出来才好呢,呵呵... C:\Documents and Settings加上NETWORD SERVICE权限后,问题解决. mysql以低权限运行出现

  • “/”应用程序中的服务器错误和Server Error in ''/'' Application.的终极解决方法

    "/"应用程序中的服务器错误. 运行时错误 说明: 服务器上出现应用程序错误.此应用程序的当前自定义错误设置禁止远程查看应用程序错误的详细信息(出于安全原因).但可以通过在本地服务器计算机上运行的浏览器查看. 详细信息: 若要使他人能够在远程计算机上查看此特定错误信息的详细信息,请在位于当前 Web 应用程序根目录下的"web.config"配置文件中创建一个 <customErrors> 标记.然后应将此 <customErrors> 标记

  • IIS运行错误 Server Application Error 错误代码 Error: 8004的解决方法

    本文将重新修正整理了一下Server application Error解决方案,修正了命令中涉及到路径的问题,使用本文中的命令,将不需要理会路径问题: iis 修复工具下载 iis_repair_jb51.rar 1.右键点击我的电脑 --> 管理 --> 本地用户和组 --> 用户,在右侧给"IUSR_机器名"和"IWAM_机器名"两个用户均设置密码为123: 2.开始 --> 运行 --> cmd ,然后依次在命令行窗口输入以下命

随机推荐