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
我正在尝试弄清楚如何在我的项目中创建库以及如何处理多个文件。
但是,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