【发布时间】:2011-11-14 20:24:33
【问题描述】:
我有一个使用 Ubuntu 11.10(Linux 版本 3.0.0-12-generic-pae 内核)开发的 C 程序。我需要在安装了 Debian 3.1(Linux 版本 2.4.24-om2)并使用 Intel(R) Pentium(R) 4 CPU 3.20GHz 处理器的集群中运行该程序。
问题是我无法在 Debian 集群中编译,因为它没有安装我的程序需要的 GSL 库,而且我不知道如何在没有 root 的情况下安装它(或使用它)特权。
如果我尝试运行我在 Ubuntu 中编译的可执行文件(或简单的 hello world 程序),即使我使用所有 gcc 选项进行编译,它也不起作用这在集群上执行时抛出:
gcc --save-temps -fverbose-asm hello_world.c -o hello_world
当我尝试执行在 Ubuntu 中编译的程序时,它会抛出:
floating point exception
更新:当我使用 -static 标志编译时,我得到的错误是:
FATAL: kernel too old
Segmentation fault.
那么我能做点什么比重新实现我正在使用的 GSL 的所有功能更好吗?
【问题讨论】:
-
你能详细说明错误输出的“不起作用”吗?此外,您似乎没有完成以“So can I do something...”开头的句子。
-
你在看什么来查看 Debian 的版本号?您发布的那个数字似乎与当前发布的任何版本都不对应。
-
感谢您的回答。我编辑了帖子以纠正错误。我正在查看的 Debian 版本是 gcc -v 的输出版本。
-
more /etc/debian_version输出 3.1。不是那个版本吗? -
最轻松的方法是在虚拟机中安装 Debian 3.1 并在其上编译程序。由于您的 Debian 集群版本和最新的 Ubuntu 版本之间存在如此巨大的差距 - 可能只会有麻烦。另一种选择是以非 root 用户身份在集群上编译/安装 GSL 本身,并针对该 GSL 库在集群上编译您的程序。无论哪种情况,您都可能需要将 GSL 静态链接到您的程序。
标签: c linux gcc cross-platform gsl