macOS和linux编译器的区别?
我现在正在学习c语言,我的学校把所有的作业都放在Mystry上,每次我们都必须通过ssh登录并远程执行命令。 因此,我想下载这些文件并在我自己的macbook上执行它们。但是,当我使用make命令编译文件时,我收到了错误和警告,例如: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
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的情况下才会发生这种情况。没有这样的标准头<