我正在尝试使用makefile编译一些代码

puzzle.o:
    gcc -o puzzle.o Sourcepuzzle -Wall -Werror -g


但是警告和错误说

/usr/bin/ld: warning: Cannot create .eh_frame_hdr section, --eh-frame-hdr
ignored.
/usr/bin/ld: error in puzzle.o(.eh_frame); no .eh_frame_hdr table will be
created.


被退回,但无法编译。

我试图在Google上搜索此信息,并获得了将-fPIC -shared放在-g之外的信息,但它没有解决问题

我想知道为什么这是问题,我应该如何解决。

先感谢您

最佳答案

重命名您的源文件(当前称为Sourcepuzzle)以具有.c扩展名,例如source.c

目前,GCC似乎无法将您的程序标识为C源,并假定它是C ++。 .eh_frame与C ++异常有关,如果您有C程序,则不相关。

或者如果Sourcepuzzle应该是makefile中的变量,则需要在命令中使用变量的值,即$(Sourcepuzzle)。在这种情况下,建议您将makefile变量命名为大写,这是公认的惯例。

09-06 06:10