【问题标题】:ld isn't looking for .so filesld 不是在寻找 .so 文件
【发布时间】:2017-05-15 22:22:57
【问题描述】:

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

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

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

[...]

尝试打开 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 文件。我在这里做什么?

【问题讨论】:

  • libhello.so 安装在哪里? -l 如果库是包含它的路径不包含在LD_LIBRARY_PATH 中是不够的,必须指定-L。此外,您正在使用 mingw,因此您使用的是需要 .dll 共享库而不是 .so 库的 Windows 操作系统。
  • 我正在使用多个文件夹,但我正在使用 -L 和 -I。谢谢,@杰克。

标签: mingw ld


【解决方案1】:

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

同样在 Windows 上,import libraries 被使用,这就是你看到两者的原因

尝试打开 lib/hello.lib 失败 尝试打开 lib/libhello.dll 失败

【讨论】:

  • 这成功了!我的印象是 .dll 文件是别的东西。非常感谢!
猜你喜欢
  • 2015-11-14
  • 1970-01-01
  • 2015-08-03
  • 1970-01-01
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
相关资源
最近更新 更多