在Cygwin中编译Boost:b2.exe无法正常运行
Boost b2.exe在Cygwin中无响应问题解决
问题描述
我执行了git clone --recursive https://github.com/boostorg/boost.git命令克隆Boost仓库,运行./bootstrap.sh后生成了./b2.exe,但执行./b2.exe --help没有任何反应。当前使用Cygwin环境,相同操作在MSYS2中可以正常运行。
以下是cygcheck ./b2.exe的输出结果:
$ cygcheck ./b2.exe C:\work\misc\boost\boost-repo\b2.exe C:\cygwin64\bin\cygwin1.dll C:\Windows\system32\KERNEL32.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-rtlsupport-l1-1-0.dll C:\Windows\system32\ntdll.dll C:\Windows\system32\KERNELBASE.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-processthreads-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-processthreads-l1-1-1.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-heap-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-memory-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-handle-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-synch-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-synch-l1-2-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-file-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-file-l1-2-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-namedpipe-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-datetime-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-sysinfo-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-timezone-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-localization-l1-2-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-processenvironment-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-string-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-debug-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-errorhandling-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-util-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-profile-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-file-l2-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-console-l1-1-0.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-console-l1-2-0.dll C:\cygwin64\usr\local\bin\cyggcc_s-seh-1.dll C:\cygwin64\usr\local\bin\cygstdc++-6.dll C:\Windows\system32\ADVAPI32.dll C:\Windows\system32\msvcrt.dll C:\Windows\system32\SECHOST.dll C:\Windows\system32\RPCRT4.dll C:\Program Files\TortoiseGit\bin\api-ms-win-core-interlocked-l1-1-0.dll
解决方法
- 排查DLL冲突:从cygcheck输出可见,系统优先加载了TortoiseGit目录下的系统API DLL,这会干扰Cygwin的运行环境。临时将TortoiseGit的
bin目录从系统PATH中移除,重启Cygwin后再执行./b2.exe --help测试。 - 重新生成b2:删除现有
b2.exe及bootstrap生成的临时文件,重新运行bootstrap脚本并指定Cygwin的gcc工具链:rm -f b2.exe bootstrap.log ./bootstrap.sh --with-toolset=gcc - 补全Cygwin开发依赖:确保Cygwin安装了
gcc-core、gcc-g++、make等基础开发包,避免因依赖缺失导致b2无法正常启动。 - 手动编译安装b2:若bootstrap生成的b2仍有问题,可直接从Boost的build子模块单独编译:
cd tools/build ./bootstrap.sh ./b2 install --prefix=/usr/local cd ../.. b2 --help
内容的提问来源于stack exchange,提问作者Bob
相关产品推荐
相关产品推荐

