为什么 Cross gdb 需要 libexpat-1.dll?

Why Cross gdb needs libexpat-1.dll?

我刚刚通过在 MSYS2/MINGW64 上编译源代码编译了一个交叉 gdb。但是当我运行 gdb 时它抛出一个错误并抱怨它无法启动因为它需要 libexpat-1.dll.

这就是我编译 gdb 所做的:

编译没有任何问题。但是我不知道为什么它需要这些库,而我已经静态编译它并禁用了共享库。

我也尝试在编译期间不使用 libexpat,但随后它抱怨另一个库 libiconv-2.dll

我搞砸了什么?

编辑:我的路径中没有 C:\msys64\mingw64\bin。添加它后,我不再收到以前的错误。

但我仍然有这个问题,为什么虽然我静态链接了库,但最终的二进制文件仍然需要一些库?

最终二进制文件仍在寻找库的原因是我使用了错误的标志。标志 --disable-shared --enable-static 没有指定当前构建应该如何 link 到库,而是指定使用此二进制文件编译的代码应该如何 link 到其他库。

因此,为了使用 libexpat 或任何其他库静态地制作 gdb 二进制文件 link 应该像这样使用配置

/binutils/gdb/path/configure --target=${TARGET} --prefix=${PREFIX} LDFLAGS="-static"

注意 LDFLAGS="-static" 标志。它会将最终的二进制文件 link 静态地强制到所有库,并且当您 运行 它时它不会寻找 dlls。