【发布时间】:2016-03-04 23:28:20
【问题描述】:
我在本地计算机上编译我的编程作业时遇到了一些问题。该程序与已知可在学校的 Scientific Linux 服务器上运行的 makefile 和编译命令一起分发给我们。我的本地机器是 Mac OS X El Capitan。
当我在 Mac 上编译运行 make 的程序时,出现以下错误,导致编译无法继续:
myid-MacBook-Pro:mp6 myid$ make
gcc -g -lm -std=c99 -Wall -Werror -c lodepng.c
clang: error: -lm: 'linker' input unused
make: *** [lodepng.o] Error 1
但是当我将与正在进行的工作相同的代码推送到 Linux 服务器并在那里编译时,一切正常。 linux 服务器使用 gcc 而不是 clang:
[netid@linux-a2 mp6]$ make
gcc -g -lm -std=c99 -Wall -Werror -c functions.c
gcc -g -lm -std=c99 -Wall -Werror main.o lodepng.o imageData.o functions.o -o mp6 -lm
gcc -g -lm -std=c99 -Wall -Werror -c test.c
gcc -g -lm -std=c99 -Wall -Werror test.o lodepng.o imageData.o functions.o solution.o -o test -lm
在makefile中,这些是变量定义:
CC=gcc
CFLAGS=-g -lm -std=c99 -Wall -Werror
和 loadpng.o 的目标定义
lodepng.o: lodepng.c
$(CC) $(CFLAGS) -c lodepng.c
对于理解这个错误并克服它的任何帮助,我将不胜感激。
非常感谢。
另外,在这篇笔记中,我想我会说我注意到 Clang 和 GCC 之间的细微差别。在我看来,即使是 Clang 生成的警告也会阻止编译继续进行,因此警告的行为就像错误一样。但是对于 GCC,如果它产生警告,它仍然会编译目标文件。如果我错了,请纠正我。
【问题讨论】:
标签: linux macos gcc compiler-errors clang