gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:47:57 26 4
gpt4 key购买 nike

我刚刚通过在 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 - -启用静态

    • make && make install

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

我还尝试在编译期间使用 libexpat,但随后它提示另一个库 libiconv-2.dll

我搞砸了什么?

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

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

最佳答案

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

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

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

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

关于linux - 为什么 Cross gdb 需要 libexpat-1.dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38167735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com