【问题标题】:Force error on unresolved symbols while linking static library链接静态库时对未解析的符号强制错误
【发布时间】:2014-08-04 22:01:55
【问题描述】:

有没有一种方法可以确保在链接时报告静态库中所有未解析的符号,无论它们是否在主程序中使用?

假设我在 foo.c 中有一个函数 foo()

#include <stdio.h>
void foo() {
  puts("foo");
}

我在 foo2.c 中有一个函数 foo2。这调用了 bar(),它没有在任何地方实现。

void foo2() {
  bar();
}

我从这些文件创建一个静态库

ar cr tmplib.a foo.o foo2.o

现在在 main.c 中,我调用 foo(),而不是 foo2()。所以这个编译,即使它没有找到 bar() 的实现。

#include "foo.h"
#include "foo2.h"

int main() {
  foo();
  return 0;
}

编译:

gcc main.o libtmpc.a

如果库中有符号在链接期间未解析,我希望报告错误。我怎样才能做到这一点?

谢谢。

【问题讨论】:

    标签: gcc compilation linker


    【解决方案1】:
    gcc main.o -Wl,--whole-archive libtmpc.a -Wl,--no-whole-archive
    

    【讨论】:

      猜你喜欢
      • 2016-01-19
      • 2017-04-13
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      • 2018-01-03
      相关资源
      最近更新 更多