ld 工具可以找到库,但 mingw 找不到 (linux)
ld tool can find the library but mingw cannot (linux)
现在,我正在尝试在 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++
正确编译它
你会找到这个库,因为它是为 linux 编译的,使用 elf64-x86-64 格式。它与 mingw 不兼容,mingw 需要 pei 格式的库(可能是 pei-x86-64 格式)。
要使用这个库你需要找到这个库的mingw版本或者自己交叉编译。
现在,我正在尝试在 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++
你会找到这个库,因为它是为 linux 编译的,使用 elf64-x86-64 格式。它与 mingw 不兼容,mingw 需要 pei 格式的库(可能是 pei-x86-64 格式)。
要使用这个库你需要找到这个库的mingw版本或者自己交叉编译。