支持linux / types.h OSX

时间:2013-11-30 16:47:01

标签: c++ macos

我正在尝试使用OSX交叉编译应用程序。但是,当我编译时,我得到以下内容......

fatal error: 'linux/types.h' file not found

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

 error: unknown type name '__s32'
 unknown type name '__u8'
 unknown type name '__u16'
 etc

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

2 个答案:

答案 0 :(得分:14)

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

解决问题的最简单方法是通过您的程序并替换

的所有实例
#include "linux/types.h"

用这个:

#include "my_linux_types.h"

...并编写一个名为my_linux_types.h的新头文件并将其添加到您的项目中;它看起来像这样:

#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

答案 1 :(得分:1)

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

相关问题