【问题标题】:When Does an Executable Get Assigned a Kernel Version何时为可执行文件分配内核版本
【发布时间】:2014-10-23 09:52:09
【问题描述】:

Linux file 命令提供有关可执行文件的信息,例如:
“/home/foo:ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),动态链接(使用共享库),用于 GNU/Linux 2.6.9,已剥离”

我对该输出的“for GNU/Linux 2.6.9”部分特别感兴趣。是什么决定的?

鉴于我有两台机器,都安装了 gcc 4.6,但一台安装了 2.6.9 Linux 内核,另一台安装了 3.2.0 Linux 内核。
如果我在 2.6.9 机器上编译 .o.a 文件,然后将其转移到 3.2.0 机器上,我什至可以将它链接到那里构建的可执行文件中吗?如果我链接它,我的可执行文件的内核版本仍然是 3.2.0 吗?

【问题讨论】:

    标签: c++ linux gcc linux-kernel version


    【解决方案1】:

    这是从机器获得的内核版本,二进制文件是在构建过程中编译和打包的。这可能与link 重复

    【讨论】:

    • @JohannesWeiß 的回答很有趣,但我认为它没有解决我的问题的核心。例如,您说内核版本来自编译二进制文件的机器。您指的是哪个“二进制”?如果我将在 2.6.9 Linux 内核上编译的 .o.a 链接到 3.2.0 Linux 内核上二进制文件的编译过程中会发生什么?
    • 我相信文件命令应该将 3.2.0 显示为您正在构建/链接/运行的内核版本。
    猜你喜欢
    • 1970-01-01
    • 2011-01-28
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    相关资源
    最近更新 更多