0

我正在使用用 Clang 构建的目标文件。但无论我传递给什么库参数ld.exe,它似乎总是吐回未解析的引用,诸如memcpy标准库之类的东西,以及诸如 _cxa_atexit 之类的实现东西。

我需要将哪些库(以及以什么顺序?)传递给 MinGW 链接器以使其将我的目标文件链接到可执行文件中?

编辑:

我将三元组从“i686-pc-mingw”更改为“i686-pc-mingw32”,它解决了大部分问题 - Clang 使用了旧的 D3D9 技巧“当输入明显错误且无法输出时静默失败可能是正确的”。但我只剩下两个未解决的外部问题——它是一些std::_Hash_implforfloatdouble,没有变化。该程序只是“你好,世界!”。奇怪的是,clang++.exe 和 g++.exe 在编译源代码时都没有问题,但是如果我使用 Clang C++ API 将其编译为 .o,然后将其传递回 MinGW,我会得到未解析的外部文件。

4

1 回答 1

2

一般来说,在构建二进制文件时使用不同的工具链并不是一个好主意。完全有可能不同工具对符号名称的想法不匹配。

不过,试图回答你的实际问题:

-lstdc将是最低要求,-lstdc++如果它是 C++ 代码。如果不知道您的代码做了什么,就不可能说您是否需要更多代码。

于 2012-12-29T14:53:35.803 回答