0

这个问题及其答案解释了链接命令行顺序的重要性。

但是,我处理了很多包含以下行的 makefile

$(CC) $(LDFLAGS) $^ -o $@

显然,像这样的命令只适用于某些系统,但不适用于我的系统。除了像这样查找和修补所有 Makefile 之外,还有其他方法可以解决此问题吗?

我正在使用 gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

编辑澄清:
我做了很多修补和集成作为我工作的一部分(通常是 buildroot 或 LTIB),我遇到了多个这样编写的 makefile。网络上的一些示例编译命令也遵循相同的模式。

4

1 回答 1

1

所以,问题是某个白痴创建了一个makefile,将所有库选项放在.o 文件之前。大概有一些损坏的工具链不在乎,但这对您没有帮助。

这里只有两个选项:

  1. 修复生成文件。
  2. 创建一个重新排序选项的编译器包装器。这样的包装器通常会被破坏,但可以使其适用于您的 makefile 使用的确切模式。

我确实想知道是否--start-group会在这里对您有所帮助,但快速实验表明不会。

于 2012-11-13T13:30:57.317 回答