macOS和linux编译器的区别?

macOS和linux编译器的区别?,c,linux,C,Linux,我现在正在学习c语言,我的学校把所有的作业都放在Mystry上,每次我们都必须通过ssh登录并远程执行命令。 因此,我想下载这些文件并在我自己的macbook上执行它们。但是,当我使用make命令编译文件时,我收到了错误和警告,例如: gcc -g -O0 -std=gnu99 -Wall $warnflags -m32 -c -I. vectest.c -o vectest.o warning: unknown warning option '-Wlogical-op'; did you

我现在正在学习c语言,我的学校把所有的作业都放在Mystry上,每次我们都必须通过ssh登录并远程执行命令。 因此,我想下载这些文件并在我自己的macbook上执行它们。但是,当我使用make命令编译文件时,我收到了错误和警告,例如:

gcc -g -O0 -std=gnu99 -Wall $warnflags -m32   -c -I. vectest.c -o vectest.o
warning: unknown warning option '-Wlogical-op'; did you mean '-Wlong-long'?

vectest.c:10:10: fatal error: 'error.h' file not found
#include <error.h>”
gcc-g-O0-std=gnu99-Wall$warnflags-m32-c-I.vectest.c-o vectest.o
警告:未知警告选项“-WLLogical op”;你是说“龙”吗?
vectest.c:10:10:致命错误:“找不到error.h”文件
#包括“

我用谷歌搜索了这些问题,但找不到满意的答案。谁能帮我解决这个问题?或者我必须使用linux机器来代替?

的确如此;不同平台的编译器(即使是“相同”的编译器,如GCC)可能具有不同的标志和行为。您可能能够让它工作-您可以从
生成文件
中的
$warnflags
中删除
-wllogical op
标志,但是如果
error.h
文件是系统提供的头文件,您可能会遇到麻烦。因此,我建议您下载并在其上运行Linux;不同平台的编译器(即使是“相同”的编译器,如GCC)可能具有不同的标志和行为。您可能能够让它工作-您可以从
生成文件
中的
$warnflags
中删除
-wllogical op
标志,但是如果
error.h
文件是系统提供的头文件,您可能会遇到麻烦。因此,我建议您下载并在其上运行Linux;不同平台的编译器(即使是“相同”的编译器,如GCC)可能具有不同的标志和行为。您可能能够让它工作-您可以从
生成文件
中的
$warnflags
中删除
-wllogical op
标志,但是如果
error.h
文件是系统提供的头文件,您可能会遇到麻烦。因此,我建议您下载并在其上运行Linux;不同平台的编译器(即使是“相同”的编译器,如GCC)可能具有不同的标志和行为。您可能能够让它工作-您可以从
生成文件
中的
$warnflags
中删除
-wllogical op
标志,但是如果
error.h
文件是系统提供的头文件,您可能会遇到麻烦。因此,我建议您下载并在其上运行Linux。

请参阅此标题提供的内容。它不是特定于linux的,而是GNUC库的。您可以做的是提供这些函数的最小实现,并编写自己的
error.h

您甚至可以“定义”它们什么也不做,但这样可能会丢失现有代码中的一些错误报告。也许你可以试着找一位理解这个问题的老师来讨论这个问题。。。最好不要使用任何特定于平台的扩展来学习标准C。

请参阅此标题提供的内容。它不是特定于linux的,而是GNUC库的。您可以做的是提供这些函数的最小实现,并编写自己的
error.h

您甚至可以“定义”它们什么也不做,但这样可能会丢失现有代码中的一些错误报告。也许你可以试着找一位理解这个问题的老师来讨论这个问题。。。最好不要使用任何特定于平台的扩展来学习标准C。

请参阅此标题提供的内容。它不是特定于linux的,而是GNUC库的。您可以做的是提供这些函数的最小实现,并编写自己的
error.h

您甚至可以“定义”它们什么也不做,但这样可能会丢失现有代码中的一些错误报告。也许你可以试着找一位理解这个问题的老师来讨论这个问题。。。最好不要使用任何特定于平台的扩展来学习标准C。

请参阅此标题提供的内容。它不是特定于linux的,而是GNUC库的。您可以做的是提供这些函数的最小实现,并编写自己的
error.h


您甚至可以“定义”它们什么也不做,但这样可能会丢失现有代码中的一些错误报告。也许你可以试着找一位理解这个问题的老师来讨论这个问题。。。最好不要使用任何特定于平台的扩展来学习标准C。

没有这样的标准头
。如果您希望能够在平台之间进行移植,则应仅使用标准功能或。还请注意,根据您的设置,在Mac OSX上,
gcc
命令可能只是
clang
的别名,这意味着您实际上没有在OSX.yep上使用gcc。谢谢提醒@JoachimPileborg我使用Makefile,其中我使用了“CC=gcc”,那么mac是使用gcc还是仍然使用clang?“别名”可能是错误的术语,它很可能是一个符号链接。因此,无论从何处调用,链接都将解析为Clang编译器。请注意,只有在您没有实际手动安装GCC的情况下才会发生这种情况。没有这样的标准头
。如果您希望能够在平台之间进行移植,则应仅使用标准功能或。还请注意,根据您的设置,在Mac OSX上,
gcc
命令可能只是
clang
的别名,这意味着您实际上没有在OSX.yep上使用gcc。谢谢提醒@JoachimPileborg我使用Makefile,其中我使用了“CC=gcc”,那么mac是使用gcc还是仍然使用clang?“别名”可能是错误的术语,它很可能是一个符号链接。因此,无论从何处调用,链接都将解析为Clang编译器。请注意,只有在您没有实际手动安装GCC的情况下才会发生这种情况。没有这样的标准头<