安装glib的问题???

 

请问:系统已安装了底版本glib,rpm格式,我下载了glib高版本,原码,我想更新他,按照文档所说的:

tar vzfx glib-XXXXXXX.tar.gz 
./configure 
make 
make install 


后, 我再

rpm -q glib 

显示的还是以前底版本的glib,我又想rpm -e 底版本的glib,可是这种蠢办法行不通,因为很多程序都是depends他的.
请大家帮我这个菜鸟解决这个蠢问题.

 

 

++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++

 

 

自己编译并安装.tar.gz格式的源代码并不影响到.rpm的数据库。如果不出意外的话,你需要的东西应该已经正确安装了(我可没说能正确使用)。用rpm -ql xxx查一下那个低版本的安装在哪个目录下,在./configure后设置,重新make并make install就行。
例如,原来的glib安装在/usr/share/glib下,那就用:

./configure --prefix=/usr/share 
make 
make install 


源代码的编译安装需要试验,可能它会直接把一大堆文件拷贝到/usr/share下,而不建glib目录。看一看你已经安装的,应该有所启发的。

 

 

 

 

 

附:glib、GTK+ 官网及下载地址

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/12/2208182.html

<think>嗯,用户的问题其实是在确认OpenJDK17是否存在基于glibc的版本。从对话历史看,用户已经理解OpenWRT必须使用musl版本的OpenJDK,现在转向探究glibc版本的存在性。 用户可能是个嵌入式开发者,正在为OpenWRT环境准备Java运行时,但担心误装不兼容的glibc版本。ta引用的三个参考里有两个提到glibc(引用2和3),说明ta确实在对比这两种libc的实现差异。 需要明确两点核心事实:第一,OpenJDK官方同时提供musl和glibc两种构建;第二,不同Linux发行版的包管理策略不同。比如CentOS的yum源(引用3)默认提供glibc版本,而Alpine(引用1)则是musl版本。 特别要注意用户贴的引用1提到"某些Java应用在musl环境需要额外配置",这正好解释为什么用户会关心版本问题——ta可能遇到过兼容性问题。回答时要强调版本选择的关键点:下载渠道决定libc类型,官方OpenJDK构建页同时提供两种版本,而发行版仓库会按自身基础库选择打包。 技术细节上需要说明:glibc版本文件名通常带"linux"字样(如openjdk-17_linux-x64_bin.tar.gz),而musl版本会明确标注"alpine"或"musl"。用户如果从OpenWRT的opkg安装则自动获取musl版,若手动下载则需注意选择。</think>是的,**OpenJDK 17 存在基于 glibc 的版本**,且这是最常见的发行版本。以下是关键结论和分析: --- ### ✅ 核心结论 1. **双版本共存** OpenJDK 17 官方同时提供 **glibc** 和 **musl** 两种构建版本: - `glibc` 版本:适用于大多数 Linux 发行版(如 Ubuntu/CentOS) - `musl` 版本:专为 Alpine Linux 或 OpenWRT 等轻量系统设计 2. **下载渠道决定版本** | 下载来源 | 默认 C 库 | 典型文件名示例 | |------------------------|------------|-----------------------------------| | 主流 Linux 官方仓库 | glibc | `openjdk-17-jre_xxx_amd64.deb` | | Alpine Linux 仓库 | musl | `openjdk17-jre-17.x.x-r0.apk` | | OpenJDK 官方构建页 | 两者可选 | `jdk-17_linux-x64_bin.tar.gz` (glibc) <br> `jdk-17_linux-musl_x64_bin.tar.gz` (musl) | --- ### 🔍 如何验证已安装 JDK 的 C 库类型 #### 方法 1:检查动态链接库 ```bash # 安装 ldd 工具 (OpenWRT) opkg update && opkg install libc-utils # 检查 Java 的依赖库 ldd $(which java) | grep -E 'libc\.|musl|glibc' ``` - **musl 输出**:`libc.musl-aarch64.so.1 => /lib/ld-musl-aarch64.so.1` - **glibc 输出**:`libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6` #### 方法 2:查看系统属性 ```bash java -XshowSettings:properties -version 2>&1 | grep libc ``` - musl 系统输出:`sun.jnu.encoding = UTF-8` (无直接标识,需结合系统环境判断) - glibc 系统通常无此属性,但可通过 `os.name` 辅助验证 --- ### ⚠️ 重要注意事项 1. **OpenWRT 的强制要求** 由于 OpenWRT 默认使用 musl,其官方软件源 **仅提供 musl 版本的 OpenJDK**。若手动安装 glibc 版本,会导致库冲突和运行时错误[^1]。 2. **Alpine Linux 的兼容性问题** 某些 Java 应用(尤其依赖 JNI 的库)在 musl 环境中需重新编译,否则可能报错 `UnsatisfiedLinkError`(如未适配的加密库、本地文件系统操作等)[^1]。 3. **glibc 版本的主导地位** 在非嵌入式场景中(如 CentOS/Ubuntu),通过 `yum` 或 `apt` 安装的 OpenJDK 17 **默认为 glibc 版本**(参考引用[2][3]): ```bash # CentOS 示例 (glibc) yum install java-17-openjdk.x86_64 ``` --- ### 💡 实践建议 - **OpenWRT/Alpine 用户**: 必须从官方 musl 仓库安装(如 `opkg install openjdk17` 或 `apk add openjdk17-jre`)。 - **手动安装用户**: 在 [OpenJDK 官方存档页](https://jdk.java.net/archive/) 选择 **`linux-musl`** 后缀的包。 - **混合环境调试**: 使用 `musl-gcc` 编译 JNI 库以兼容 musl: ```bash # 编译示例 musl-gcc -fPIC -shared -I${JAVA_HOME}/include native.c -o libnative.so ``` > 📌 **总结**:OpenJDK 17 同时支持 glibc 和 musl,但必须根据操作系统选择匹配版本。OpenWRT 等 musl 系统若错误安装 glibc 版本,将导致严重兼容性问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值