【发布时间】:2016-07-03 07:37:38
【问题描述】:
我刚刚通过在 MSYS2/MINGW64 上编译源代码编译了一个交叉 gdb。但是当我运行 gdb 时,它会抛出一个错误并抱怨它无法启动,因为它需要libexpat-1.dll。
这是我编译 gdb 所做的:
- 获取源代码
git clone git://sourceware.org/git/binutils-gdb.git -
在不同的目录中:
export TARGET=x86_64-amd-linux-gnuexport PREFIX=/tmp/myToolChainbinutils/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。添加它后,我不再收到以前的错误。
但我仍然有这个问题,为什么虽然我静态链接库,但最终的二进制文件仍然需要一些库?
【问题讨论】:
-
MSYS2 具有三种不同的 shell 环境:MSYS2 Shell、MinGW-w64 Win64 Shell 和 MinGW-w64 Win32 Shell。你用的是哪一个? (即
echo $MSYSTEM的值是多少?)您运行 gdb 的具体情况如何?您看到的具体错误消息是什么? -
我用 MINGW-W64 Win64 shell 构建了整个东西;
$ echo $MSYSTEM返回MINGW64。我在目录中打开一个 CMD 窗口,然后运行 x86_64-amd-linux-gnu-gdb.exe --version。错误是The program can't start because libexpat-1.dll is missing from your computer. Try reinstalling the program to fix this problem.
标签: linux windows cross-compiling msys2