【发布时间】: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。谢谢,@杰克。