2017-01-01 90 views
2

我想弄清楚如何在我的项目中创建库和一般处理多个文件。ld不寻找.so文件

但是,ld报告它“找不到-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文件。我在这里做什么?

+0

在哪里libhello.so安装?如果库是包含它的路径不包含在'LD_LIBRARY_PATH'中,那么-l是不够的,你必须指定'-L'。此外,您正在使用mingw,因此您使用的是Windows操作系统,它需要.dll共享库,而不是.so库。 – Jack

+0

我正在使用多个文件夹,但我正在使用-L和-I。谢谢,@Jack。 – NomeQueEuLembro

回答

0

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

也可以在Windows,import libraries使用,这就是为什么你看到两个

试图打开的lib/hello.lib失败 试图打开的lib/libhello.dll失败

+0

这工作!我的印象是,.dll文件是别的。非常感谢! – NomeQueEuLembro