解决macOS上的TCC警告
我正在寻找一个C解释器来使用,同时制作一个简单的C实用程序来避免一直编译。我按照建议安装了TCC,但收到警告和错误。如何正确运行TCC解决macOS上的TCC警告,c,interpreter,tcc,C,Interpreter,Tcc,我正在寻找一个C解释器来使用,同时制作一个简单的C实用程序来避免一直编译。我按照建议安装了TCC,但收到警告和错误。如何正确运行TCC $ tcc -run hello.c .../usr/include/sys/cdefs.h:81: warning: #warning "Unsupported compiler detected" #if !defined(__GNUC__) || __GNUC__ < 4 #warning "Unsupported compiler detected
$ tcc -run hello.c
.../usr/include/sys/cdefs.h:81: warning: #warning "Unsupported compiler detected"
#if !defined(__GNUC__) || __GNUC__ < 4
#warning "Unsupported compiler detected"
#endif
我的环境:
~$ gcc --version
Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin16.7.0
如果TCC不适合macOS,请建议一个运行良好的C解释器。可以肯定的是,CERN或其他基于LLVM/Clang的解释器,因为这是苹果在macOS中使用的解释器。在您第一条消息所抱怨的行上方的块注释是
/* This SDK is designed to work with clang and specific versions of
* gcc >= 4.0 with Apple's patch sets */
#if !defined(__GNUC__) || __GNUC__ < 4
#warning "Unsupported compiler detected"
#endif
/*此SDK设计用于clang和特定版本的
*gcc>=4.0,带有苹果的补丁集*/
#如果!已定义(uuu GNUC_uuuu)| | uuu GNUC_uu4
#警告“检测到不支持的编译器”
#恩迪夫
这是非常清楚的-您确实需要gcc或clang。幸运的是,这两个编译器都非常易于安装和使用
我不会为C解释器而烦恼——它不是一种解释语言。首先,
tcc
不是一种“解释器”,它是一种非常快速的编译器,可以用来编译和运行C代码,就像它是脚本一样
第二,“检测到不支持的编译器”警告只是一个警告。我一直收到警告,我的代码编译和运行都没有问题。如果警告困扰您,您可以简单地使用-w
选项运行tcc
,以抑制警告(可能仅当您正在运行一个已知没有问题的文件时才建议使用)
例如,如果您正在运行C代码,就像它是一个使用tcc
shebang行的脚本一样,您可以将其更改为
#!/usr/local/bin/tcc -w -run
在macOS上运行tcc
时,可能会出现一些其他问题。主文件缺少包含文件。在macOS上,可能无法将包含文件安装到/usr/include/
。查看此项以了解修复方法。一旦Xcode正确安装了头文件,我仍然需要更新我的环境变量以获得tcc
来找到它们
export C_INCLUDE_PATH="/usr/include:$C_INCLUDE_PATH"
您可以通过运行
tcc-vv
查看tcc
在哪里查找头文件为什么自制的编译器不能工作?无论如何,这里有一个bug问题:MacOS附带了GCC/clang开箱即用(更新了原始帖子)。TCC的一个缺点是它不能自动获取这个信息吗?Clang、gcc和TCC都是不同的编译器。问题是tcc试图使用与操作系统捆绑在一起的标准库,这与tcc不兼容。实际上,通过使用-run
my(simple)C代码可以解释,所以我可以删除警告,看看我得到了多少。@forthrin显然你不知道编译和解释之间的区别。TCC这个名字来源于。它是编译器,不是解释器。-run
命令行选项告诉它启动编译后的程序执行(如果编译成功)。我明白了!我确实知道其中的区别,但很明显,我误读了引用的文章,这篇文章似乎把它说成是一名译员。好吧,如果没有(轻量级!)“C解释器”这样的东西,那么我还是继续使用GCC吧。大量的下载,压倒性的——帮助和非常技术性的文档。不容易进入…@forthrin:如果你需要一个基于LLVM/Clang的最小解决方案,你也可以创建自己的微型解释器:不过,我猜你更喜欢现成的解释器,这就是为什么我建议使用Cling。
export C_INCLUDE_PATH="/usr/include:$C_INCLUDE_PATH"