首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >支持linux/types.h OSX

支持linux/types.h OSX
EN

Stack Overflow用户
提问于 2013-12-01 00:47:01
回答 2查看 13.1K关注 0票数 15

我正在尝试使用OSX交叉编译一个应用程序。然而,当我编译时,我得到了以下代码...

代码语言:javascript
运行
复制
fatal error: 'linux/types.h' file not found

当我更改为sys/types.h时,现在我得到...

代码语言:javascript
运行
复制
 error: unknown type name '__s32'
 unknown type name '__u8'
 unknown type name '__u16'
 etc

有人能帮我解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-18 02:19:27

显然,特定于Linux的头文件不会出现在MacOS/X下,它不是基于Linux的。

解决此问题的最简单的解决方法是遍历您的程序并替换

代码语言:javascript
运行
复制
#include "linux/types.h"

有了这个:

代码语言:javascript
运行
复制
#include "my_linux_types.h"

..。然后编写一个名为my_linux_types.h的新的头文件,并将其添加到您的项目中;它将如下所示:

代码语言:javascript
运行
复制
#ifndef my_linux_types_h
#define my_linux_types_h

#ifdef __linux__
# include "linux/types.h"
#else
# include <stdint.h>
typedef int32_t __s32;
typedef uint8_t __u8;
typedef uint16_t __u16;
[... and so on for whatever other types your program uses ...]
#endif

#endif
票数 16
EN

Stack Overflow用户

发布于 2014-01-18 02:16:56

这些标头是内核使用的标头。问题可能出在跨平台(在我们的例子中是Linux与Mac OS )的头文件的实现和定义上。POSIX定义并不适用于内核,而是适用于它向用户空间公开的系统调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20302860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档