如何同时编译头文件和C文件?
我创建了一个如何同时编译头文件和C文件?,c,header-files,C,Header Files,我创建了一个文件.h和一个文件.c如何在Ubuntu上编译它们?使用以下命令编译您的程序(对于GCC编译器): 无需编译file.h文件。使用以下命令编译程序(对于GCC编译器): 不需要编译file.h文件。您只需要编译.c文件,而不需要编译.h文件。 要在Ubuntu上编译file.c,您可以使用: …或: 可以预编译头文件,但在特定情况下只需要预编译头文件 如果file.h与file.c不在同一文件夹中,您可以使用GCC或Clang的-I选项。 示例:如果file.h位于include/
文件.h
和一个文件.c
如何在Ubuntu上编译它们?使用以下命令编译您的程序(对于GCC编译器):
无需编译file.h文件。使用以下命令编译程序(对于GCC编译器):
不需要编译file.h文件。您只需要编译
.c
文件,而不需要编译.h
文件。
要在Ubuntu上编译file.c
,您可以使用:
…或:
可以预编译头文件,但在特定情况下只需要预编译头文件
如果
file.h
与file.c
不在同一文件夹中,您可以使用GCC或Clang的-I
选项。
示例:如果file.h
位于include/
文件夹中:
gcc -I include/ file.c -o my_program
在file.c
中,您仍然有此指令,只有文件名:
#include "file.h"
您只需要编译
.c
文件,而不需要编译.h
文件。
要在Ubuntu上编译file.c
,您可以使用:
…或:
可以预编译头文件,但在特定情况下只需要预编译头文件
如果
file.h
与file.c
不在同一文件夹中,您可以使用GCC或Clang的-I
选项。
示例:如果file.h
位于include/
文件夹中:
gcc -I include/ file.c -o my_program
在file.c
中,您仍然有此指令,只有文件名:
#include "file.h"
您还可以通过使用makefile来使用更通用的方法 以下是此类文件的一个简短示例:
# Declaration of variables
CC = gcc
CC_FLAGS = -w -Werror -Wall
# File names
# "prgoram" will be the name of the output produced from the make process
EXEC = program
#Incorporates all the files with .c extension
SOURCES = $(wildcard *.c)
OBJECTS = $(SOURCES:.c=.o)
# Main target
$(EXEC): $(OBJECTS)
$(CC) $(OBJECTS) -o $(EXEC)
# To obtain object files
%.o: %.c
$(CC) -c $(CC_FLAGS) $< -o $@
# To remove generated files
clean:
rm -f $(EXEC) $(OBJECTS)
此命令将自动将工作目录中的所有源文件链接到一个名为“program”的可执行文件中。要运行程序本身,只需使用以下命令:
./program
make clean
要清理项目和创建的可执行文件,可以运行以下命令:
./program
make clean
当处理包含大量源文件的较大项目时,makefile非常强大。您可以查看有关如何使用makefiles的更多指导。这也是一个关于该主题的非常详细的教程。您还可以通过使用makefile来使用更通用的方法 以下是此类文件的一个简短示例:
# Declaration of variables
CC = gcc
CC_FLAGS = -w -Werror -Wall
# File names
# "prgoram" will be the name of the output produced from the make process
EXEC = program
#Incorporates all the files with .c extension
SOURCES = $(wildcard *.c)
OBJECTS = $(SOURCES:.c=.o)
# Main target
$(EXEC): $(OBJECTS)
$(CC) $(OBJECTS) -o $(EXEC)
# To obtain object files
%.o: %.c
$(CC) -c $(CC_FLAGS) $< -o $@
# To remove generated files
clean:
rm -f $(EXEC) $(OBJECTS)
此命令将自动将工作目录中的所有源文件链接到一个名为“program”的可执行文件中。要运行程序本身,只需使用以下命令:
./program
make clean
要清理项目和创建的可执行文件,可以运行以下命令:
./program
make clean
当处理包含大量源文件的较大项目时,makefile非常强大。您可以查看有关如何使用makefiles的更多指导。这也是一个关于这个主题的非常详细的教程。Duplicate of:可能的Duplicate of您需要一个编译器。下载gcc?副本:可能的副本您需要一个编译器。下载gcc?它仍然没有编译它。它说“引用未定义到”main”“@user541409我想您有两个或多个.c文件。不,它只是一个。@user541409请确保您在
.c
文件中定义了一个名为main()
的函数。这是启动程序时调用的第一个函数,因此您需要定义一个。我建议gcc-Wall-Wextra-g file.c-o file
,因为您需要警告和调试信息(默认情况下,gcc
不提供这些信息),所以它仍然不会编译。它说“引用未定义到”main”“@user541409我想您有两个或多个.c文件。不,它只是一个。@user541409请确保您在.c
文件中定义了一个名为main()
的函数。这是启动程序时调用的第一个函数,因此您需要定义一个。我建议gcc-Wall-Wextra-g file.c-o file
,因为您需要警告和调试信息(默认情况下,gcc
不提供这些信息)我推荐gcc-Wall-Wextra-g file.c-o file
或clang-Wall-Wextra-g file.c-o myprog
,可能是-I include/
,因为您需要警告和调试信息(而gcc
或clang
默认不提供)使用-Werror
也可以确保在编译器警告您的情况下,您不会尝试运行代码-它会将所有警告转换为错误。我建议使用gcc-Wall-Wextra-g file.c-o file
或clang-Wall-Wextra-g file.c-o myprog
,也许使用-I include/
,因为您需要警告和调试信息(默认情况下,gcc
或clang
不提供这些信息),并且使用-Werror
也可以确保您在编译器警告您的情况下不尝试运行代码-它会将所有警告转换为错误。