我想在Mac终端中编译C11源代码,但失败了。我尝试了g-std=c11
、g-std=1c0x
、g-std=gnu11
和
,但都没有成功。终端始终读取
无法识别的命令行选项
。然而,
g-std=gnu
和类似的东西运行良好(当然,C11源代码无法通过)。
我应该使用哪个选项来打开C 11支持?
顺便说一下,我正在使用的命令行工具安装在Xcode中,我很确定它们是最新的。
XCode在编译的时候用的是< code>clang和< code>clang ,而不是< code>g (假设你没有自定义东西)。相反,请尝试:
$ cat t.cpp
#include <iostream>
int main()
{
int* p = nullptr;
std::cout << p << std::endl;
}
$ clang++ -std=c++11 -stdlib=libc++ t.cpp
$ ./a.out
0x0
感谢巴姆斯53的回答指出我遗漏了-stdlib=libc
。
如果您想使用一些GNU扩展(同时也使用C11),可以使用-std=gnu11
而不是-std=c11
,这将打开C11模式并保持GNU扩展启用。
正如其他人指出的那样,您应该使用 clang
而不是 g
。另外,你应该使用 libc 库而不是默认的 libstdc ;libstdc 的包含版本相当旧,因此不包括 C 11 库功能。
clang++ -std=c++11 -stdlib=libc++ -Weverything main.cpp
如果尚未安装Xcode的命令行工具,则可以使用xcrun
工具运行编译器和其他工具,而无需执行此操作。
xcrun clang++ -std=c++11 -stdlib=libc++ -Weverything main.cpp
此外,如果要禁用某个特定的警告,可以向编译器传递其他标志。在警告消息的末尾,它将向您显示启用警告的最具体标志。要禁用该警告,请在警告名称前加上no-
。
例如,您可能不希望出现c98兼容性警告。在这些警告的末尾,它显示标志-Wc 98 compat
,要禁用这些警告,请传递-Wno-c 98 compat
。
我试图学习如何在终端中编译在IDE Eclipse上制作的Java程序。在打开终端后立即开始,我应该采取什么步骤在终端中编译我在Eclipse上制作的程序?谢谢你的帮助。 更新:我导航到了我的java文件夹,找到了存放我的程序的包,并完成了javac Hello一行。java(Hello是我试图编译的基本“Hello World”程序),但当我执行java Hello时,会出现一个很大的错误: 线
问题内容: 我想将我的.java(几个)编译成至少与Java 兼容的,较新的(最好是较新的)版本。(我有) 问题答案: 是的,您可以在编译时设置编译器的版本。并将您的Java代码编译为Java的旧版本。 从Oracle文章:http : //docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javac.html 交叉编译示例 在这里,我们使用ja
我已经下载了Xcode 8.0测试版,其中包括更新的Swift 3编译器。是否可以在终端上使用Swift 3编译器? 例如,我可以使用“Swift(filename)”命令在终端中编译和运行Swift 2.2代码。
问题内容: 我正在尝试使用Python 2.5.1支持来编译Vim 7.2,但是遇到了一些麻烦。 我运行configure,看起来好像按预期工作 我可以看到对更改所做的工作符合我的预期(最终的编译版本具有新功能),并且可以正确设置Python 正在检查python …(已缓存)//python/2.5/bin/python正在检查Python版本…(已缓存)2.5正在检查Python是否为1.4或
我想将我的.java(几个)编译成一个,该至少兼容和更新版本,最好是和更新版本的Java。(我有)
我想在我的linux终端上编译一个Netbeans Maven-Java应用程序。 这是因为我想使用Git CVS并能够在独立于IDE的服务器中编译项目。 但我很难真正理解依赖关系是如何工作的,或者我就是这么想的。 我正在使用一个简单的java应用程序代码连接到mysql数据库并获取一些信息。 我正在使用此代码: 然后将mysql连接器java添加到项目依赖项pom中。xml如下所示: 如果我将n