包含即使使用正确的-I / gcc + mac os也找不到的文件

时间:2019-06-25 16:46:28

标签: macos gcc include-path

gcc显然无法在指定位置找到包含文件。如果我使用,它确实可以工作

#include "fullpath/stdint.h"

我无法使用它

#include < stdint.h >

我尝试在Mac OS上使用gcc来编译软件包。没有成功我把问题钉在了包含文件stdint.h上。

我编写了以下测试代码:

// 1 #include <stdint.h>
// 2 #include "/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdint.h"
// 3 typedef unsigned long long uint64_t;

#include <stdio.h>
int main()
{
uint64_t x ;

x = 10 ;

printf("x = %lld\n",x);
}

如果我取消注释掉第一行注释为“ 1”的行,它将无法正常工作。

我尝试使用:

> gcc -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/ test.c
test.c:8:9: error: expected ';' after expression
uint64_t x ;
        ^
        ;
test.c:8:1: error: use of undeclared identifier 'uint64_t'
uint64_t x ;
^

我还尝试将GCC_INCLUDE_DIRC_INCLUDE_DIR环境变量设置为无效:

> env | grep INCLUDE C_INCLUDE_PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/
GCC_INCLUDE_PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/
> gcc test.c
test.c:8:9: error: expected ';' after expression
uint64_t x ;
        ^
        ;
test.c:8:1: error: use of undeclared identifier 'uint64_t'
uint64_t x ;

现在,如果我使用2或3条注释掉的行,则该程序可以编译并正常运行。

因此,找到stdint.h文件肯定有一些问题。我使用-I有什么问题吗?我重新阅读了这一行一千遍,在-I之后添加了一个空格,将空格取出,似乎没有任何帮助。环境变量也是如此。

gcc和Mac OS版本:

> uname -a
Darwin Antonios-MacBook-Pro.local 18.5.0 Darwin Kernel Version 18.5.0: Mon Mar 11 20:40:32 PDT 2019; root:xnu-4903.251.3~3/RELEASE_X86_64 x86_64

> gcc --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

0 个答案:

没有答案