信息发布→ 登录 注册 退出

conan入门(十八):Cannot recognize the Windows subsystem, install MSYS2/cygwin or specify a build_require

发布时间:2025-08-28

点击量:

在windows下进行ndk交叉编译boost时,遇到

libiconv/1.16
库报错,提示无法识别windows子系统,需要安装msys2/cygwin或指定
build_require
来解决这个问题。以下是解决方案的详细说明:

在Linux下进行交叉编译时不会遇到此问题,因为在Windows下编译

libiconv/1.16
需要依赖MSYS2环境来执行bash shell脚本。问题的根源在于没有指定
-pr:b
参数(即
--profile:build
)。

通常情况下,交叉编译时只需使用

-pr:h
参数指定目标主机的profile文件即可,但对于
libiconv/1.16
这样的库,在Windows下编译时必须使用MSYS2环境。

以下是

libiconv/1.16
conanfile.py
中相关的代码片段:

def build_requirements(self):
    if self._settings_build.os == "Windows" and not tools.get_env("CONAN_BASH_PATH"):
        self.build_requires("msys2/cci.latest")

如果不指定

-pr:b
参数,上述条件将不成立,导致编译
libiconv
时没有MSYS2环境。

因此,在这种情况下,进行交叉编译时不仅需要使用

-pr:h
指定目标主机的profile文件,还需要使用
-pr:b
参数指定编译主机的profile。通常情况下,
-pr:b
参数可以设置为
default
,使用默认的profile。

正确的执行命令如下:

$ conan install boost/1.69.0@ -pr:h android_armv7a_clang -pr:b default --build missing  -o without_stacktrace=True

指定了

-pr:b default
后,执行时会自动下载并安装MSYS2。

关于Boost的交叉编译,可以参考之前的博客:《conan入门(十):Windows下Android NDK交叉编译Boost》。

标签:# 只需  # 下载并安装  # 解决这个问题  # 在这种情况下  # 将不  # 设置为  # 报错  # 还需要  # 详细说明  # linux  # 情况下  # android  # default  # bash  # shell脚本  # win  # windows  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!