如何更改Linux以C99模式编译?
我需要将编译模式更改为C99,有什么方法可以做到这一点吗如何更改Linux以C99模式编译?,c,C,我需要将编译模式更改为C99,有什么方法可以做到这一点吗 我使用的是vim,所以它根本就不是和IDE。我假设您使用的是gcc。使用-std=c99标志。任何符合POSIX标准的系统都应该有一个名为c99的编译器前端。在linux上,这通常只是一个包装器,它将必要的选项设置为gcc 如果您必须将它传递给make,您可以在命令行上给它CC=c99。或者,您也可以只在bashrc(或等效程序)中添加一行 我不确定如何从vim编译C代码,但无论如何,您需要创建一个make文件并执行它来编译。您需要指定C
我使用的是vim,所以它根本就不是和IDE。我假设您使用的是gcc。使用
-std=c99
标志。任何符合POSIX标准的系统都应该有一个名为c99
的编译器前端。在linux上,这通常只是一个包装器,它将必要的选项设置为gcc
如果您必须将它传递给make
,您可以在命令行上给它CC=c99
。或者,您也可以只在bashrc(或等效程序)中添加一行
我不确定如何从vim编译C代码,但无论如何,您需要创建一个make文件并执行它来编译。您需要指定C99开关,但是请注意,它没有在GCC中完全实现 请注意,该标准尚未制定 全力支持;看见 更多信息 如果您还没有,我提供了一个用于C homeworks的通用make文件:
# ------------------------------------------------
# Generic Makefile
#
# Author: Yanick Rochon
# Date : 2010-11-05
#
# Changelog :
# 0.01 - first version
# ------------------------------------------------
# project name (generate executable with this name)
TARGET = <executable name here>
CC = gcc -c
# compiling flags here
CFLAGS = -std=c99 -Wall -I.
LINKER = gcc -o
# linking flags here
LFLAGS = -std=c99 -Wall
SOURCES := $(wildcard *.c)
INCLUDES := $(wildcard *.h)
OBJECTS := $(SOURCES:.c=*.o)
rm = rm -f
$(TARGET): obj
@$(LINKER) $(TARGET) $(LFLAGS) $(OBJECTS)
@echo "Linking complete!"
obj: $(SOURCES) $(INCLUDES)
@$(CC) $(CFLAGS) $(SOURCES)
@echo "Compilation complete!"
clean:
@$(rm) $(TARGET) $(OBJECTS)
@echo "Cleanup complete!"
#------------------------------------------------
#通用生成文件
#
#作者:Yanick Rochon
#日期:2010-11-05
#
#更改日志:
#0.01-第一版
# ------------------------------------------------
#项目名称(使用此名称生成可执行文件)
目标=
CC=gcc-c
#在这里编译标志
CFLAGS=-std=c99-Wall-I。
链接器=gcc-o
#链接标志在这里
LFLAGS=-std=c99-墙壁
来源:=$(通配符*.c)
包括:=$(通配符*.h)
对象:=$(源:.c=*.o)
rm=rm-f
美元(目标):obj
@$(链接器)$(目标)$(LFLAGS)$(对象)
@echo“链接完成!”
obj:$(来源)$(包括)
@$(CC)$(CFLAGS)$(来源)
@echo“编译完成!”
清洁:
@$(rm)$(目标)$(对象)
@echo“清理完成!”
**编辑**
我通常使用GEdit编辑我的C源代码,并打开一个终端(或者使用GEdit的终端插件)进行编译(使用make)。您也可以使用成熟的IDE编辑源代码,如SharpDevelop或Anjuta,但我发现GEdit和terminal是我更喜欢的C开发工具。原因之一是我实际上必须自己(大部分)完成所有工作,所以我知道发生了什么:)用Vim代替GEdit也可以实现同样的效果。Vim不是C编译器;你需要一个C编译器来编译C代码是的,是的,我知道。。。。有些ppl可能会告诉我从IDE开始更改它。重点是你需要指定你使用的编译器,而不是你使用的IDE。@XMasterrrr,如果你打开一个终端,键入
gcc--version
并粘贴输出gcc(Ubuntu/Linaro 4.4.4-14ubuntu5)4.4.5没有该标志,没有其他方法可以获得c99?@Xmasterr您希望如何获得它?@Xmasterr:您能更准确地描述一下如何编译代码吗?@Lucas为什么默认情况下不使用c99模式编译?我在linux上使用gcc(fedora)是的,它可以工作,但每次打开新的terminal@XMasterrrr,这取决于您的设置。您必须更改并将其写入shell的相应配置文件中。然后可能会注销并重新连接以使其生效。我应该在某个时候完全阅读POSIX。我不知道:)所以我可以使用这个makefile,因为它是我的原始文件?只需将它放在.c文件所在的位置,然后键入make
进行编译。但是请注意,这个makefile并不编译子目录中的源代码
# ------------------------------------------------
# Generic Makefile
#
# Author: Yanick Rochon
# Date : 2010-11-05
#
# Changelog :
# 0.01 - first version
# ------------------------------------------------
# project name (generate executable with this name)
TARGET = <executable name here>
CC = gcc -c
# compiling flags here
CFLAGS = -std=c99 -Wall -I.
LINKER = gcc -o
# linking flags here
LFLAGS = -std=c99 -Wall
SOURCES := $(wildcard *.c)
INCLUDES := $(wildcard *.h)
OBJECTS := $(SOURCES:.c=*.o)
rm = rm -f
$(TARGET): obj
@$(LINKER) $(TARGET) $(LFLAGS) $(OBJECTS)
@echo "Linking complete!"
obj: $(SOURCES) $(INCLUDES)
@$(CC) $(CFLAGS) $(SOURCES)
@echo "Compilation complete!"
clean:
@$(rm) $(TARGET) $(OBJECTS)
@echo "Cleanup complete!"