ld 不是在寻找 .so 文件

ld isn't looking for .so files

我正在尝试弄清楚如何在我的项目中创建库以及如何处理多个文件。

但是,ld 报告它 "cannot find -lhello"(其中 libhello 是我的自定义库)。不过,当我使用 -l:libhello.so 时它编译得很好。

然后我 运行 ld 使用 --verbose 选项,这就是我得到的:

[...]

尝试打开 lib/libhello。dll.a 失败

尝试打开 lib/hello。dll.a 失败

尝试打开 lib/libhello.a 失败

尝试打开 lib/hello.lib 失败

尝试打开 lib/libhello.dll 失败

尝试打开 lib/hello.dll 失败

尝试打开 lib\libhello.a 失败

[...]

列表继续到一堆其他目录和文件名,但事实证明其中没有一个是 "hello.so" 或 "libhello.so"。我不知道为什么,但似乎 ld 在编译时没有寻找 .so 文件。我在这里做什么?

在 Windows 上,共享库有一个 .dll 后缀,而不是 .so。如果您有一个为 Windows 生成共享库的 Makefile,它们应该有一个 .dll 扩展名。

在 Windows 上也使用了 import libraries,这就是为什么您会同时看到

attempt to open lib/hello.lib failed attempt to open lib/libhello.dll failed