【问题标题】:ld tool can find the library but mingw cannot (linux)ld 工具可以找到库,但 mingw 不能(linux)
【发布时间】:2021-03-04 01:51:27
【问题描述】:

现在,我正在尝试在 Linux 上使用 MinGW 编译一些同时使用 PoDoFo 和 Magick++(ImageMagick 的一部分)的 C++ 代码。我正在使用 MinGW,所以我可以为 Windows 编译。当我尝试编译时,我得到了这个错误:

/usr/lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld: cannot find -lpodofo

但是,当我运行ld -L/usr/local/lib -lpodofo --verbose 时,它能够找到库。我将如何解决这个问题?我有一个理论认为 MinGW 的链接器无法找到它,但原始 GNU 工具的链接器能够找到它。如果这是问题所在,我不太确定我将如何解决它。

正如更多信息,这是我的代码中的包含部分:

#include <iostream>
#include <string>
#include <podofo.h>
#include <Magick++.h>
#include <vector>
#include <thread>

这是我的编译命令:

x86_64-w64-mingw32-g++ main_multithreaded.cpp -L /usr/local/lib `Magick++-config --cppflags --cxxflags --ldflags --libs` -I"/usr/local/include/PoDoFo" -l"podofo" -DDEBUG

请注意,为了让 MinGW 甚至将 PoDoFo 添加到其包含目录中,我必须进行大量更改,因此这可能无法在其他人的计算机上重现。另外,我可以使用g++ 正确编译它

【问题讨论】:

  • 您是否已将库安装到您的 MinGW 环境中?你是怎么安装的?您是否检查过它是否真的带有 PoDoFo 库?也许 PoDoFo 需要单独安装?
  • 您能否阐明将其安装到 MinGW 环境中的含义?我使用pacman 安装它,并在编译器命令中手动链接代码
  • 我还应该补充一下我的代码可以使用 g++ 正确编译和运行的问题

标签: c++ mingw ld magick++ podofo


【解决方案1】:

您的 ld 找到该库,因为它是为使用 elf64-x86-64 格式的 linux 编译的。它与需要 pei 格式(可能是 pei-x86-64 格式)的库的 mingw 不兼容。

为了使用这个库你需要找到这个库的mingw版本或者自己交叉编译。

【讨论】:

  • 感谢您的回答。这似乎是真的。如果它不起作用,我会尝试并提出任何问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 2014-03-03
  • 2012-04-03
  • 2012-08-19
  • 2014-12-27
  • 2015-11-14
相关资源
最近更新 更多