确定C可执行文件名称

时间:2009-03-17 11:17:58

标签: c gcc compilation executable linkage

当我们编译C程序时,输出存储在a.out中。我们如何将编译后的输出重定向到另一个文件?

9 个答案:

答案 0 :(得分:33)

大多数C编译器为此提供-o选项,例如:

gcc -o gentext gentext.c
cc  -o mainprog -Llib -lmymath firstbit.c secondbit.o
xlc -o coredump coredump.c

答案 1 :(得分:19)

-ofilenamefilename代替a.out

答案 2 :(得分:8)

根据手册:

-o <file>  Place the output into <file>

答案 3 :(得分:4)

在C源自的Unix中,C程序通常是逐个模块编译的,然后编译的模块链接到可执行文件中。对于由模块foo.cbar.c组成的项目,命令将如下所示:

cc -c foo.c
cc -c bar.c
cc -o myprog foo.o bar.o

(使用-c,输出文件名成为源文件,后缀替换为.o。)

这允许您只重新编译那些已经更改的模块,这对于大型程序来说可以节省大量时间,但也可能变得非常棘手。 (这部分通常使用make自动完成。)

对于单模块程序,首先编译到.o文件然后进行链接并没有任何意义,因此单个命令就足够了:

cc -o foo foo.c

对于单模块程序,通常将生成的可执行程序调用与没有.c后缀的C源文件相同。对于多模块程序,没有硬性自定义输出是否以带有main函数的文件命名,因此您可以自由发明任何您喜欢的内容。

答案 4 :(得分:1)

使用编译:

cc -o <opfilename> <filename.c>

执行使用:

./<opfilename>

答案 5 :(得分:1)

使用-o选项。

gcc main.c -o myCoolExecutable.o

如果您的程序包含单个文件,则可以。如果您有更多文件,建议您使用make:创建一个Makefile,然后运行命令make

Makefile是一个包含一些编译规则的文件。 以下是一个示例(#表示该行是注释):

CXX = gcc

#CXXFLAGS = -std=c++11
#INC_PATH = ...
#LIBS = ...

SOURCEDIR := yourSourceFolder
SOURCES := $(wildcard $(SOURCEDIR)/*.c)
OBJDIR=$(SOURCEDIR)/obj

OBJECTS := $(patsubst $(SOURCEDIR)/%.c,$(OBJDIR)/%.o, $(SOURCES))
DEPENDS := $(patsubst $(SOURCEDIR)/%.c,$(OBJDIR)/%.d, $(SOURCES))

# ADD MORE WARNINGS!
WARNING := -Wall -Wextra

# .PHONY means these rules get executed even if
# files of those names exist.
.PHONY: all clean

# The first rule is the default, ie. "make",
# "make all" and "make parking" mean the same
all: yourExecutableName

clean:
    $(RM) $(OBJECTS) $(DEPENDS) yourExecutableName

# Linking the executable from the object files
# $^   # "src.c src.h" (all prerequisites)
yourExecutableName: $(OBJECTS)
    $(CXX) $(WARNING) $^ -o $@
    #$(CXX) $(WARNING) $(CXXFLAGS) $(INC_PATH) $^ -o $@ $(LIBS)

-include $(DEPENDS)

$(OBJDIR):
    mkdir -p $(OBJDIR)

$(OBJDIR)/%.o: $(SOURCEDIR)/%.c Makefile | $(OBJDIR)
    $(CXX) $(WARNING) -MMD -MP -c $< -o $@

简短地CXX变量定义了您的编译器(gcc,g ++),with CXXFLAGS您可以为编译定义标志(即-std=c++11)。然后,您可以包括并定义自定义(INC_PATHLIBS:在示例中未设置)。使用SOURCEDIR,您可以指定源代码目录(*.c文件所在的位置)。然后,SOURCES基本上告诉编译的源文件都是扩展名为{{1}的文件。 }。

*.c包含一组规则,其结构如下:

Makefile

生成可执行文件的规则是

output: inputs
    commandToExecute

等效于yourExecutableName: $(OBJECTS) $(CXX) $(WARNING) $^ -o $@

gcc -Wall -Wextra $(OBJECTS) -o yourExecutableName是编译产生的目标文件。当执行以上规则时,如果找不到它们,make将继续扫描文件以找到生成它们的规则。在这种情况下,生成这些文件的规则是:

$(OBJECTS)

如果需要更多信息,请告诉我。

答案 6 :(得分:0)

如果foo是您的可执行文件,而bar.c是您的源文件,则命令为:

gcc -o foo bar.c

答案 7 :(得分:0)

C语言中根据用户选择给出.exe文件名的格式

步骤 1 :- 在终端上以以下格式运行 gcc(或您拥有的编译器)

    gcc -o put_your_name_you_want_to_give (space) your_file_name_you_want_to_execute

注意:- 如果您正在运行 “Vs 代码”,请使用“Tab”键进行自动完成。

步骤 2 :- 以格式写下程序名称

           .\the_name_you_have_given.exe

大功告成!

答案 8 :(得分:0)

假设你使用的是 ubuntu

步骤 1: 使用这些命令运行 gcc 来编译 filename.c

gcc filename.c -o filename.out

  • filename.out 将被创建,(它可能会也可能不会显示其他文件的存储位置)

第 2 步:通过

执行filename.out

./filename.out

step-3:等待输出

就是这样,你完成了

相关问题