java - configure 脚本是如何寻找某个命令的
大家讲道理
大家讲道理 2017-04-17 11:28:29
[Java讨论组]

我在某 CentOS 6 上编译 collectd ,运行了 ./configure --enable-java 后提示找不到 javac :

checking for javac... not found
checking for jar... not found
checking for javac... no
checking for jar... no

但该服务器已经用 yum install java-1.7.0-openjdk-devel 安装了 jdk ,从命令行是可以运行 javac 的:

$ which javac
/usr/bin/javac

我认为它可能是通过 JAVA_HOME 来找的,但环境变量中没有设置 JAVA_HOME ,于是用 export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk.x86_64 设置,但 configure 仍然找不到。

P.S. 这个 configure 脚本在我的 archlinux 上就可以找到 javac ,可以正常运行

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
巴扎黑

自问自答。

看了代码之后我终于找到问题了:此 configure 的确是用 find 来找的,最后的命令大概是这样子:

find "$JAVA_HOME" -name javac

但这里的 $JAVA_HOME 是一个指向目录的符号链接,这就是问题所在:find 默认不跟进符号链接。

但如果在这个符号链接最后加一个“/”,即 /usr/lib/jvm/java-1.7.0-openjdk.x86_64/ 的话 find 又可以找到了。

PHP中文网

翻了翻 https://github.com/collectd/collectd/blob/master/configure.ac
发现2115行以下的代码跟javac的检测相关,代码里写的是用find命令找的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号