configure: error: You should retry --with-os-type=SUBDIR

本文介绍了解决configure:error提示的具体步骤,通过正确配置环境变量来指定Java的安装路径,确保系统能够正确识别Java环境。
configure: error: You should retry --with-os-type=SUBDIR

这个是因为环境变量没有设置好,如果是ARCH,那么把下面这段写入.bashr或者是.xprofile(反正就是那种类似于全局环境变量设置的配置文件啦)
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
export JRE_HOME=/usr/lib/jvm/java-6-openjdk/jre
export PATH=$PATH:/usr/lib/jvm/java-6-openjdk/bin
export CLASSPATH=./:/usr/lib/jvm/java-6-openjdk/lib:/usr/lib/jvm/java-6-openjdk/jre/lib

没有生效的话,注销一次即可

这段的参考来源为百科中给的环境变量设置:
export JAVA_HOME=/usr/jdk1.6.0_07
export JRE_HOME=/usr/jdk1.6.0_07/jre
export PATH=$PATH:/usr/jdk1.6.0_07/bin
export CLASSPATH=./:/usr/jdk1.6.0_07/lib:/usr/jdk1.6.0_07/jre/lib

也就是把
jdk1.6.0_07
替换为自己系统中安装jdk的位置
如果不知道的安装在哪儿了的话
可以执行
sudo find /|grep jni_md.h
我搜索出来的结果为:
/usr/lib/jvm/java-6-openjdk/include/linux/jni_md.h

那么就把原句中的
/usr/jdk1.6.0_07
替换为
/usr/lib/jvm/java-6-openjdk
即可
可通用
<think>我们首先分析用户的问题:用户遇到了configure脚本执行时的警告信息,包括: 1. WARNING: you should use --build, --host, --target 2. WARNING: invalid host type 3. WARNING: unrecognized option: --with-sftp-server 结合用户之前的问题(关于./configure --host的选项)和本次的警告,我们需要解释: - --build, --host, --target三个参数的区别和正确用法 - 如何指定有效的host类型(即正确的三元组) - 为什么会出现“unrecognized option”警告(通常是因为该configure脚本不支持该选项) 同时,用户提供的引用[1]中提到了系统类型(System types)的三个参数:--build, --host, --target,我们可以参考。 步骤: 1. 解释三个参数的含义。 2. 说明如何正确指定host(避免无效主机类型)。 3. 分析--with-sftp-server选项不被识别的原因及解决方法。 注意:用户提供的引用[2]是关于aria2配置的,与当前问题无关,忽略。 因此,我们按照以下结构回答: 一、参数详解:--build, --host, --target 二、解决无效主机类型(invalid host type)的方法 三、处理未识别选项(unrecognized option)的方法 四、综合示例 最后,生成相关问题。</think>### 解决 `configure` 警告与参数配置问题 您在编译软件时遇到的警告信息表明配置参数使用不当,以下是详细分析和解决方案: --- ### 一、参数详解:`--build`, `--host`, `--target` | 参数 | 作用描述 | 默认值 | 典型场景示例 | |------------|--------------------------------------------------------------------------|---------------------|------------------------------| | **`--build`** | 指定**编译代码的平台**(执行编译的机器) | 自动检测当前系统 | `x86_64-pc-linux-gnu` | | **`--host`** | 指定**程序运行的平台**(生成的可执行文件将在该平台运行)**(关键参数)**[^1] | 与 `--build` 相同 | `arm-linux-gnueabihf` | | **`--target`**| 指定**程序处理的目标平台**(仅适用于编译器、汇编器等工具链) | 与 `--host` 相同 | `mips-unknown-linux-gnu` | **关系公式**: $$ \text{编译平台} \xrightarrow{\text{build}} \text{工具链} \xrightarrow{\text{host}} \text{运行平台} \xrightarrow{\text{target}} \text{生成代码平台} $$ **交叉编译典型用法**: ```bash ./configure \ --build=x86_64-pc-linux-gnu \ # 编译机是x86 Linux --host=arm-linux-gnueabihf # 目标机是ARM Linux ``` --- ### 二、警告解决方案 #### 1. `WARNING: invalid host type` **原因**:使用了无效的三元组格式或未识别的平台标识 **解决步骤**: 1. 查询有效主机类型: ```bash # 查看当前系统支持的类型 ./config.guess # 输出示例:x86_64-pc-linux-gnu ``` 2. 使用标准三元组格式: ```bash # 正确示例(树莓派4) ./configure --host=arm-linux-gnueabihf ``` #### 2. `WARNING: unrecognized option: --with-sftp-server` **原因**:该软件不支持此配置选项 **解决步骤**: 1. 检查可用选项: ```bash ./configure --help | grep sftp # 确认是否存在相关选项 ``` 2. 替代方案: ```bash # 使用通用SFTP配置(如果支持) ./configure --enable-sftp --with-openssl ``` #### 3. `WARNING: you should use --build, --host, --target` **原因**:未明确指定跨平台参数 **解决方案**: ```bash # 明确指定所有参数(交叉编译示例) ./configure \ --build=$(./config.guess) \ # 自动获取当前平台 --host=arm-linux-gnueabihf \ # 指定目标平台 --target=arm-linux-gnueabihf # 通常与host相同 ``` --- ### 三、完整配置示例 **为ARM设备交叉编译SSH服务**: ```bash # 设置工具链 export CC=arm-linux-gnueabihf-gcc export CXX=arm-linux-gnueabihf-g++ # 配置参数 ./configure \ --build=$(./config.guess) \ --host=arm-linux-gnueabihf \ --disable-strip \ # 禁止裁剪符号(方便调试) --with-ssl-dir=/opt/arm-openssl # 指定ARM版OpenSSL路径 # 编译安装 make -j4 make install ``` --- ### 四、常见问题排查 1. **依赖库缺失**: ```bash # 指定库路径(ARM库目录) export LD_LIBRARY_PATH=/opt/arm-libs:$LD_LIBRARY_PATH ``` 2. **工具链验证**: ```bash arm-linux-gnueabihf-gcc -v # 检查交叉编译器 ``` 3. **配置日志分析**: ```bash less config.log | grep "error" # 查看详细错误 ``` > 提示:90%的编译错误源于不匹配的依赖库或无效的主机类型,务必保持`--host`值与工具链前缀一致[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值