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_DIR
和C_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