为什么 Cross gdb 需要 libexpat-1.dll?
Why Cross gdb needs libexpat-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:\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 静态地强制到所有库,并且当您 运行 它时它不会寻找 dll
s。
我刚刚通过在 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:\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 静态地强制到所有库,并且当您 运行 它时它不会寻找 dll
s。