g++ 找到 -lXext 但 MinGW 找不到它并出现错误:i586-mingw32msvc/bin/ld: 找不到 -lXext

Posted

技术标签:

【中文标题】g++ 找到 -lXext 但 MinGW 找不到它并出现错误:i586-mingw32msvc/bin/ld: 找不到 -lXext【英文标题】:g++ finds -lXext but MinGW cannot find it with error: i586-mingw32msvc/bin/ld: cannot find -lXext 【发布时间】:2016-02-09 15:30:50 【问题描述】:

我可以使用 g++ 构建一个 Linux 可执行文件,如下所示:

g++ -I/usr/local/include -I/usr/local/include/FL/images -I/usr/include/freetype2 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_THREAD_SAFE -D_REENTRANT -o '2016_02_06a_1st_Window' '2016_02_06a_1st_Window.cxx' /usr/local/lib/libfltk.a -lXext -lXft -lfontconfig -lpthread -ldl -lm -lX11

但是当我尝试使用 MinGW 构建 MS Windows 可执行文件时,如下所示并发生错误:

i586-mingw32msvc-g++ -I/usr/local/include -I/usr/local/include/FL/images -I/usr/include/freetype2 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_THREAD_SAFE -D_REENTRANT 2016_02_06a_1st_Window.cxx -L/usr/local/lib -lfltk -lXext -lXft -lfontconfig -lpthread -ldl -lm -lX11 -o 2016_02_06a_1st_Window.exe

MinGW的错误是:

Compiling and linking..
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/bin/ld: cannot find -lXext
collect2: ld returned 1 exit status

我已经安装了各种 Xext 库,例如:



我的机器上有以下 Xext 库:

user@computer:~$ locate *Xext*
/usr/include/X11/extensions/Xext.h
/usr/lib/i386-linux-gnu/libXext.a
/usr/lib/i386-linux-gnu/libXext.so
/usr/lib/i386-linux-gnu/libXext.so.6
/usr/lib/i386-linux-gnu/libXext.so.6.4.0

我觉得 g++ 知道 Xext 库在哪里,但 MinGW 不知道。任何想法都会有所帮助。

【问题讨论】:

/usr/lib/i386-linux-gnu/ 是 MinGW 链接器查找库的默认位置吗?你是如何在 MinGW 中安装 Xext 包的?你在哪里找到的文件? .so 扩展名不适用于 Windows,共享库应该是普通的 DLL。 @JoachimPileborg 这就是问题所在。 MinGW 不会在这些位置查找库,即使 MinGW 这样做,这些库也是 Linux 格式 (.so) 而不是 Windows (.dll)。我不知道解决方案。 【参考方案1】:

你正在运行一个交叉编译器,主机是 linux,目标是 windows,所以当你链接你的目标二进制文件时,你应该有目标库。在您的情况下,您应该拥有适用于 windows 的 libX,并且您列出的是 linux 库,这就是您的交叉编译器找不到要链接的库的原因。

【讨论】:

对,我觉得我应该在 Windows 平台上找出等效的 Xext 库(可能还有其他库)。

以上是关于g++ 找到 -lXext 但 MinGW 找不到它并出现错误:i586-mingw32msvc/bin/ld: 找不到 -lXext的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 中编译 SWIG python 包装器时,MinGW g++ 找不到 numpy\arrayobject.h

g++ 只查找 .lib 文件

mingw windows找不到Eigen头文件

使用 MinGW 和 MSYS 找不到 .dll

GHC 找不到适用于 mingw gcc(但不是 mingw-w64)的外部库(libjack.lib)

在路径中找不到 Eclipse g++:windows