什么导致了"/usr/bin/ld: -f may not be used without -shared"错误,如何修复它?

4

在尝试为Linux编译NMR软件modelfree4.20时,我遇到了这个错误。该发行版附带MakeFile,因此我在modelfree文件夹中键入“make”以尝试编译它,在写入一些文件后,我收到以下错误:

/usr/bin/ld: -f may not be used without -shared
collect2: error: ld returned 1 exit status
Makefile:74: recipe for target 'modelfree4' failed
make: *** [modelfree4] Error 1

我不知道“-f may not be used without -shared”是什么意思,也不知道它想要我修复什么?当我打开MakeFile时,我没有看到任何带有-f或-shared的内容,并且在运行“make”时我也没有指定任何选项。
非常感谢您的帮助!
1个回答

3

我认为有两种可能性。

  1. 如果Makefile是由configure脚本生成的,则可能需要再次运行该脚本。您可能因错误配置而选择了一个错误的Makefile。可能需要再次运行autotools以重新生成configure脚本。
  2. 有可能存在一些系统或会话特定的LDFLAGS环境变量干扰链接。尝试使用unset LDFLAGS

1
如果不是./configure,可能需要使用cmake生成特定于环境的Makefile - wallyk
非常感谢大家的帮助!问题最终是Linux构建的Makefile实际上在脚本顶部同时激活了Linux和Mac命令。注释掉Mac命令最终解决了问题。我相信从头开始重建Makefile也可以解决问题,但幸运的是我没有必要走那么远。 - tonberry
对我来说也是同样的问题(构建gpac/mp4box),这意味着我必须传递适当的交叉编译sdl-config,以便它不使用(特定于Mac的)默认sdl-config... - rogerdpack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接