Pertanyaan Mendukung linux / types.h OSX


Saya mencoba mengkompilasi sebuah aplikasi menggunakan OSX. Namun, ketika saya mengkompilasi, saya mendapatkan yang berikut ...

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

Ketika saya mengubah ke sys / types.h dan sekarang saya ...

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

Adakah yang bisa membantu saya dengan cara menangani ini?


11
2017-11-30 16:47


asal


Jawaban:


Jelas file header Linux-spesifik tidak akan hadir di bawah MacOS / X, yang tidak berbasis Linux.

Pekerjaan yang paling mudah untuk mengatasi masalah adalah melalui program Anda dan mengganti semua contoh

#include "linux/types.h"

dengan ini:

#include "my_linux_types.h"

... dan menulis file header baru bernama my_linux_types.h dan menambahkannya ke proyek Anda; itu akan terlihat seperti ini:

#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

13
2018-01-17 18:19



Header tersebut adalah header yang digunakan kernel. Mungkin, masalahnya ada pada implementasi dan definisi file header di seluruh platform (Linux vs Mac OS dalam kasus kami) Definisi POSIX tidak berlaku untuk kernel, tetapi lebih ke sistem memanggilnya mengekspos ke ruang pengguna.


1
2018-01-17 18:16