当前位置: 首页 > 面试题库 >

预期2.6.16和2.6.26内核版本之间的“内核太旧”错误

越扬
2023-03-14
问题内容

我在运行带有内核2.6.26-2-amd64的Linux(Debian)的计算机上构建了一个应用程序,我想在运行运行内核2.6.16.60-0.21-smp的Linux(Suse)的另一台计算机上运行此应用程序,但是出现了错误“致命:内核太旧”。

我从互联网上的研究中得知,如果针对未编译为支持较早内核版本的glibc库进行构建,则可能会发生这种情况,但它通常涉及2.4版。是否有可能针对相同系列(2.6)的内核获得此类错误,或者可能是其他原因引起的?

另外,我读到该问题的解决方案是针对使用适当的–enable-kernel =
VERSION选项编译的glibc的另一个版本重建应用程序。作为替代方案,您可以将应用程序与glibc动态链接以解决问题吗?

感谢您的帮助。

更新 :我理解我的问题似乎已经被提到的解决方案之一模糊或解决了(动态链接,在另一个[虚拟]系统上构建,重建glibc
[考虑到我所读到的评论,这似乎很棘手])但是我是什么最终寻找预防此类问题的方法。

例如,是否可以找到与特定版本的glibc兼容的Linux内核版本?

更新2 :我最终找到了glibc的源补丁(用于Debian,但我想其他发行版也有类似的在线文档)包含我在寻找的信息。

从此页面:

--- eglibc-2.11.2.orig/debian/sysdeps/linux.mk
+++ eglibc-2.11.2/debian/sysdeps/linux.mk
@@ -0,0 +1,51 @@
[...]
+MIN_KERNEL_SUPPORTED := 2.6.18
[...]
+# Minimum Kernel supported
+with_headers = --with-headers=$(shell pwd)/debian/include
--enable-kernel=$(call xx,MIN_KERNEL_SUPPORTED)
[...]

这说明了“内核太旧”错误。希望它对其他人有帮助。


问题答案:

确定给定ELF文件的最低内核版本的一种方法是file在其上运行,如下所示:

$ echo 'int main(){}' > test.c
$ gcc -o test test.c
$ file test
test: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.38, not stripped

这里的重要部分是“ for GNU/Linux 2.6.38”,它表示最低内核版本。



 类似资料:
  • 由于Linux系统的特殊性,G01对于Linux系统的支持主要以内核版本为主,即"uname -a"所显示的版本信息;而不以系统的版本信息为支持标准。 以下表格中为当前G01支持的Linux系统内核版本,安装时请进行参考。 CentOS/RedHat Linux 内核版本 CentOS 7/RedHat Linux 7 CentOS 6/RedHat Linux 6 CentOS 5/RedHat

  • 我正在使用约克托项目来构建 linux os 映像。我使用SUMO版本,所以我有4.14.73内核版本。 问题是我有预编译的linux驱动,版本是4.14.88。 我认为我必须升级我的linux内核,使其成为相同版本的驱动程序。 知道怎么做吗?

  • 本文向大家介绍操作系统和内核之间的区别,包括了操作系统和内核之间的区别的使用技巧和注意事项,需要的朋友参考一下 操作系统 操作系统管理计算机,并充当用户和计算机之间的接口。操作系统是启动计算机时启动的第一个程序。 核心 内核是操作系统的核心组件,负责将用户命令转换为机器级别的语言命令。 以下是操作系统和内核之间的重要区别。 序号 键 操作系统 核心 1 类型 操作系统是系统软件。 内核是操作系统的

  • DatabaseType SPI 名称 详细说明 DatabaseType 支持的数据库类型 已知实现类 详细说明 SQL92DatabaseType 遵循 SQL92 标准的数据库类型 MySQLDatabaseType MySQL 数据库 MariaDBDatabaseType MariaDB 数据库 PostgreSQLDatabaseType PostgreSQL 数据库 OracleDa

  • RT-Thread 内核,包括内核库和实时内核的实现 模块   基础定义   RT-Thread 基本数据类型     系统初始化   RT-Thread 的启动流程     内核对象管理   内核对象管理接口     线程管理   线程管理接口     时钟管理   时钟管理接口     定时器管理   定时器管理接口     线程间通讯   线程间通讯接口     内存池管理   静态内存池接

  • 主要内容:创建一个核心,使用create命令,使用create_core命令,删除核心Solr核心(Core)是Lucene索引的运行实例,包含使用它所需的所有Solr配置文件。我们需要创建一个Solr Core来执行索引和分析等操作。 Solr应用程序可以包含一个或多个核心。 如果需要,Solr应用程序中的两个核心可以相互通信。 创建一个核心 安装和启动Solr后,可以连接到Solr的客户端(Web界面)。访问以下网址: http://Localhost:8983/solr/ 如