当我尝试使用命令行参数编译 C 源文件时,WSL 出现编译错误
Compilinig error on WSL when I try to compile a C sourcefile with command line parameters
编译以下 C 代码时编译器失败,抛出杂散字符错误:
#include "stdio.h"
int main(int argc, char *argv[]) {
int count;
printf("The command line has %d arguments:\n", argc - 1);
for(count = 1; count < argc; count++) {
printf("%d: %s\n", count, argv[count]);
}
printf("\n");
return 0;
}
编译器:gcc 5.4.0 20160609 Ubuntu 16.04.3
错误截图:here
顺便说一句,其他C文件(如"hello world")也可以编译成功。
继续我的评论,“您的代码中没有错误”,因此您收到的任何错误都是由于您的编译字符串 或 是因为您在 windows 编辑器中编辑了文件,该编辑器在 WSL 中损坏了文件。
要将您的代码(没有警告或错误)编译为默认的 a.out
可执行文件,您可以使用简单的命令行:
gcc -Wall -Wextra yourfilename.c
注意: 始终在编译时启用 警告 ,至少 -Wall -Wextra
。您可以添加更多单独的警告选项以及添加 -pedantic
这将启用更多选项。
如果您想添加一些额外的选项、优化级别和编译所依据的 C 标准,以及为您的可执行文件提供自定义名称而不是默认名称 a.out
,您可以使用:
gcc -Wall -Wextra -pedantic -std=gnu11 -O3 -o yourexename yourfilename.c
通过编辑您的问题并将您收到的错误的确切文本添加到您的问题中,尝试并报告您收到的确切错误(如果有)。
如果您还有其他问题,请告诉我。
编译以下 C 代码时编译器失败,抛出杂散字符错误:
#include "stdio.h"
int main(int argc, char *argv[]) {
int count;
printf("The command line has %d arguments:\n", argc - 1);
for(count = 1; count < argc; count++) {
printf("%d: %s\n", count, argv[count]);
}
printf("\n");
return 0;
}
编译器:gcc 5.4.0 20160609 Ubuntu 16.04.3
错误截图:here
顺便说一句,其他C文件(如"hello world")也可以编译成功。
继续我的评论,“您的代码中没有错误”,因此您收到的任何错误都是由于您的编译字符串 或 是因为您在 windows 编辑器中编辑了文件,该编辑器在 WSL 中损坏了文件。
要将您的代码(没有警告或错误)编译为默认的 a.out
可执行文件,您可以使用简单的命令行:
gcc -Wall -Wextra yourfilename.c
注意: 始终在编译时启用 警告 ,至少 -Wall -Wextra
。您可以添加更多单独的警告选项以及添加 -pedantic
这将启用更多选项。
如果您想添加一些额外的选项、优化级别和编译所依据的 C 标准,以及为您的可执行文件提供自定义名称而不是默认名称 a.out
,您可以使用:
gcc -Wall -Wextra -pedantic -std=gnu11 -O3 -o yourexename yourfilename.c
通过编辑您的问题并将您收到的错误的确切文本添加到您的问题中,尝试并报告您收到的确切错误(如果有)。
如果您还有其他问题,请告诉我。