我正在尝试使用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
有人能帮我解决这个问题吗?
发布于 2014-01-18 02:19:27
显然,特定于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
发布于 2014-01-18 02:16:56
这些标头是内核使用的标头。问题可能出在跨平台(在我们的例子中是Linux与Mac OS )的头文件的实现和定义上。POSIX定义并不适用于内核,而是适用于它向用户空间公开的系统调用。
https://stackoverflow.com/questions/20302860
复制相似问题