我正在尝试编译一个基于 OpenWRT 的新包(它是某种经过修改的 OpenWRT)。在此./configure
过程中,由于缺少 OpenSSL,我遇到了失败,但当我检查时,它已经安装好了。
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US.UTF-8",
LC_ALL = (unset),
LC_COLLATE = "C",
LC_CTYPE = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Apply config ./ugw/config/GRX750_HE_VDSL_LTE_GW_72
Checking 'working-make'... ok.
Checking 'case-sensitive-fs'... ok.
Checking 'gcc'... ok.
Checking 'working-gcc'... ok.
Checking 'g++'... ok.
Checking 'working-g++'... ok.
Checking 'ncurses'... ok.
Checking 'zlib'... ok.
Checking 'libssl'... failed.
Checking 'tar'... ok.
Checking 'find'... ok.
Checking 'bash'... ok.
Checking 'patch'... ok.
Checking 'diff'... ok.
Checking 'cp'... ok.
Checking 'seq'... ok.
Checking 'awk'... ok.
Checking 'grep'... ok.
Checking 'getopt'... ok.
Checking 'stat'... ok.
Checking 'md5sum'... ok.
Checking 'unzip'... ok.
Checking 'bzip2'... ok.
Checking 'wget'... ok.
Checking 'perl'... ok.
Checking 'python'... ok.
Checking 'python3'... ok.
Checking 'git'... ok.
Checking 'file'... ok.
Checking 'openssl'... ok.
Checking 'ldconfig-stub'... ok.
Build dependency: Please install the openssl library (with development headers)
Prerequisite check failed. Use FORCE=1 to override.
make: *** [staging_dir/host/.prereq-build] Error 1
当我跑步yum install openssl
或者yum install openssl-devel
Package openssl-1.0.1e-57.el6.x86_64 already installed and latest version
我已经研究过类似的问题,例如 - ./configure 期间缺少 OpenSSL。如何修复?和./configure 期间未找到 OpenSSL但它们对我没什么帮助。
不确定是否相关,但也许locale
我在一开始收到的那些警告相关?
我的操作系统是 CentOS 6。
谢谢!
答案1
对于任何可能遇到同样问题的人来说
。@lungj评论中指出,该问题似乎是由于环境变量配置错误造成的。
取消以下设置解决了问题:
unset LD_LIBRARY_PATH
unset LDFLAGS
unset CFLAGS
我不需要安装或更改任何其他东西。
答案2
不管怎样,我也遇到了同样的问题,但问题是我从 openwrt repo 切换了分支,并且在重建之前没有完全清理 repo。(尽管我这样做了使清洁乃至git clean-fd 命令,但这还不够)。经过一些调试,我发现用于测试 openssl 安装的命令是
echo 'int main(int argc, char **argv) { SSL_library_init(); return 0; }' | \
gcc $(HOST_CFLAGS) -include openssl/ssl.h -x c -o $(TMP_DIR)/a.out - -lcrypto -lssl $(HOST_LDFLAGS)
问题是,这些标志使得 staging_dir/host/lib 被用作库包含路径。由于 ssl 库是之前构建的,但与我的主机版本的 libssl-dev 不兼容,因此编译命令失败。
在重建之前彻底清理 git repo(git clean -f -d -X),然后重新制作即可修复。希望这能帮助到某天的某人