GLIBC:如何告诉可执行文件链接到特定版本的 GLIBC

问题描述 投票:0回答:1

我们正在构建一个针对 Ubuntu 18.04 LTS 和所有更高版本的 GTK3 应用程序。但是,当我们在 Ubuntu 20.04 版本中构建应用程序时,该应用程序无法在较旧的 Ubuntu 版本上运行。它说

但是如果我在 Ubuntu 18.04 上构建一个应用程序,它将适用于所有后续的 Ubuntu 版本。 Ubuntu 18.04 默认情况下有 GLIBC 版本 2.27,该版本将适用于所有后续版本。

那么有什么方法可以告诉我的应用程序,该应用程序是使用 GLIBC 2.27 构建的,无论构建该应用程序的操作系统是什么版本?有什么方法可以在构建过程中将 GLIBC 版本的信息提供给应用程序吗?

linux ubuntu libc
1个回答
0
投票

我没有尝试以下解决方案,但 yoiu 可以尝试一下并告诉我它是否有效。

#include <limits.h>
#include <stdlib.h>
#include <stdio.h>

__asm__ (".symver realpath,realpath@GLIBC_x.y.z");

int main() {
    const char* unresolved = "/lib64";
    char resolved[PATH_MAX+1];

    if (!realpath(unresolved, resolved)) {
        return 1;
    }

    printf("%s\n", resolved);
    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.