Je rencontre des problèmes lorsque je compile du code C sur mon mac qui me donne cette erreur:
Erreur fatale: fichier 'endian.h' introuvable
J'ai fait une recherche Google sur ce problème.Il semble que mac os x ne possède pas de fichiers d'en-tête comme "endian.h", nous devons créer ce fichier manuellement.
Ensuite, j'ai trouvé ceci http://www.opensource.Apple.com/source/CarbonHeaders/CarbonHeaders-18.1/Endian.h qui pourrait être le fichier que je recherche mais pas sûr.
Mais plus de problèmes arrivent .. où dois-je mettre ce fichier?
Le fichier/usr/include n'existe pas.
Ce sont les dossiers dans mon répertoire/usr:
X11 bin libexec share X11R6 lib sbin standalone
Quelqu'un pourrait-il m'aider à vérifier l'exactitude du fichier endian.h que j'ai trouvé et me dire où placer ce fichier dans mon mac s'il vous plaît?
Xcode sur OS X n'installe pas les outils de ligne de commande par défaut. En fonction de votre version Xcode et OS X, vous devez
xcode-select --install
depuis la ligne de commande du terminal.Cela installera également les fichiers "/ usr/include", y compris "/usr/include/machine/endian.h".
Pour Xcode 10 et versions ultérieures, voir réponse de Camille G. .
Je viens d'utiliser <machine/endian.h>
plutôt que <endian.h>
.
Ça marche.
Comme indiqué dans le premier commentaire, endian.h
est dans /usr/include/machine/
dossier.
Téléchargez et installez les outils de ligne de commande (macOS 10.X) pour XCode 10.X à partir de Apple: - https://developer.Apple.com/download/more/
Depuis MacOS 10.14, cela ne créera plus le dossier /usr/include Cela nécessite l'installation d'un paquet supplémentaire que vous pourriez trouver sur votre ordinateur après avoir installé les outils de ligne de commande:
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
En fait, vous devez importer "Endian.h", vérifiez votre gestionnaire de disque, peut-être que votre disque est sensible à la casse
J'ai eu un problème similaire aujourd'hui. Pour résoudre le problème, j'ai créé un fichier nommé endian.h
à /usr/local/include/endian.h
cela contient
#ifndef __FINK_ENDIANDEV_PKG_ENDIAN_H__
#define __FINK_ENDIANDEV_PKG_ENDIAN_H__ 1
/** compatibility header for endian.h
* This is a simple compatibility shim to convert
* BSD/Linux endian macros to the Mac OS X equivalents.
* It is public domain.
* */
#ifndef __Apple__
#warning "This header file (endian.h) is MacOS X specific.\n"
#endif /* __Apple__ */
#include <libkern/OSByteOrder.h>
#define htobe16(x) OSSwapHostToBigInt16(x)
#define htole16(x) OSSwapHostToLittleInt16(x)
#define be16toh(x) OSSwapBigToHostInt16(x)
#define le16toh(x) OSSwapLittleToHostInt16(x)
#define htobe32(x) OSSwapHostToBigInt32(x)
#define htole32(x) OSSwapHostToLittleInt32(x)
#define be32toh(x) OSSwapBigToHostInt32(x)
#define le32toh(x) OSSwapLittleToHostInt32(x)
#define htobe64(x) OSSwapHostToBigInt64(x)
#define htole64(x) OSSwapHostToLittleInt64(x)
#define be64toh(x) OSSwapBigToHostInt64(x)
#define le64toh(x) OSSwapLittleToHostInt64(x)
#endif /* __FINK_ENDIANDEV_PKG_ENDIAN_H__ */
Gist est
https://Gist.github.com/dendisuhubdy/19482135d26da86cdcf442b3724e0728
ou changez simplement l'en-tête pointant sur endian.h
au lieu de
#if defined(OS_MACOSX)
#include <machine/endian.h>
#Elif defined(OS_SOLARIS)
#include <sys/isa_defs.h>
#ifdef _LITTLE_ENDIAN
#define LITTLE_ENDIAN
#else
#define BIG_ENDIAN
#endif
#Elif defined(OS_FREEBSD) || defined(OS_OPENBSD) || defined(OS_NETBSD) ||\
defined(OS_DRAGONFLYBSD)
#include <sys/types.h>
#include <sys/endian.h>
#else
#include <endian.h>
#endif