为什么Cross gdb需要libxpat -1.dll



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

我是这样编译gdb的:

  • 获取源代码git clone git://sourceware.org/git/binutils-gdb.git
  • 在另一个目录中:
    • export TARGET=x86_64-amd-linux-gnu

    • export PREFIX=/tmp/myToolChain

    • binutils/gdb/path/configure --with-python=/mingw64/bin/python --target=${TARGET} --prefix=${PREFIX} --disable-shared --enable-static

    • make && make install

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

我也尝试在编译过程中使用libexpat,但它抱怨另一个库libiconv-2.dll

我搞砸了什么?

编辑:我没有C:msys64mingw64bin在我的路径。在添加它之后,我不再得到之前的错误了。

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

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

因此,为了使gdb二进制文件与libexpat或任何其他库静态链接,应该使用如下配置
/binutils/gdb/path/configure --target=${TARGET} --prefix=${PREFIX} LDFLAGS="-static"

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

相关内容

  • 没有找到相关文章

最新更新