gpt4 book ai didi

c - 如何为不同的机器编译 Linux 可执行文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:44 25 4
gpt4 key购买 nike

我用 C 语言编写了一个 Linux 程序,我正试图让它在服务器系统上运行。看起来一切正常,但当我尝试时,我得到了这个:

/lib64/libc.so.6: version `GLIBC_2.14' not found (required by <program>)
/lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libdbi.so.1)

(其中 <program> 是我的程序名称。)

据我所知,我的程序只需要那个版本的 GLIBC,因为 libdbi 需要。我已尝试从源代码编译 libdbi,但它仍会尝试链接到该版本的 GLIBC。

我不拥有服务器系统(这是一个共享系统,我在上面运行一个网站,并且可以通过 SSH 访问),所以我无法对其进行任何更改——这就是为什么库文件在同一个目录中目录,我设置了LD_LIBRARY_PATH=. .不幸的是,我也无法访问其上的编译器——当我尝试运行 GCC 时,我被告知“权限被拒绝”。它由一家大公司经营,我只是一个客户;他们根据我的要求进行任何更改的可能性基本上为零。

有什么方法可以在我的系统上编译该程序,以便它可以在服务器上运行吗?

在我问之前,我发现了这些类似的问题:

还有其他的,但它们似乎是那些的变体。

如果我把它变成一个商业产品,我愿意使用一个非免费的解决方案(就像我在另一个答案中看到的,但我现在找不到),但对于一次性使用来说,这似乎是一种过大的杀伤力,更不用说费用了。

有没有办法简单地告诉 libdbi 链接到更高版本的 GLIBC,也许?如果没有,是否有任何我忽略的解决方案?

最佳答案

无论大公司与否,如果您以任何方式支付服务费用或为满足要求的开发支付费用,他们至少欠您的是对运行时环境的详细描述,以便您可以在开发机器上复制它。

然后你必须着手系统地复制这个环境。由于您使用的是 libdbi,因此您应该彻底了解。数据库连接可以使用大块的系统 API,所以你希望拥有完全相同版本的 Linux,gcc(即使你不能运行它,你也需要知道系统其他部分编译时使用的版本),以及其他工具和库。如果不这样做,您将无法确信您的开发机器测试会转化为目标上的良好行为。

虚拟机是创建专用开发环境而不破坏现有开发环境的好方法。

关于c - 如何为不同的机器编译 Linux 可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19637897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com