我需要让我的Linux可执行文件“一次编译,到处运行”。理论上是可能的,因为我的程序只使用非常基本的系统调用(网络IO和文件IO的系统调用)。但实际情况则不同:
我的开发平台是Ubuntu 12.04,它有相当新的内核、glibc和工具链。我首先尝试静态链接我的可执行文件,但该可执行文件拒绝在CentOS 5(内核版本2.6.18)上运行。如果可执行文件是动态链接的,则动态加载器(ld.so)拒绝加载我的可执行文件。我甚至尝试提供一个修改过的动态加载器(我将其修改为忽略内核版本)、libc、libgcc_s,仍然不起作用,因为修改后的加载器总是试图从系统中加载libc并忽略与我的可执行文件一起提供的libc。
我需要一个动态加载器,可以盲目地加载我想要加载的所有内容。有人知道在Linux上这样的动态加载器吗?我不确定自己是否朝着正确的方向前进,所以欢迎任何建议。
我的开发平台是Ubuntu 12.04,它有相当新的内核、glibc和工具链。我首先尝试静态链接我的可执行文件,但该可执行文件拒绝在CentOS 5(内核版本2.6.18)上运行。如果可执行文件是动态链接的,则动态加载器(ld.so)拒绝加载我的可执行文件。我甚至尝试提供一个修改过的动态加载器(我将其修改为忽略内核版本)、libc、libgcc_s,仍然不起作用,因为修改后的加载器总是试图从系统中加载libc并忽略与我的可执行文件一起提供的libc。
我需要一个动态加载器,可以盲目地加载我想要加载的所有内容。有人知道在Linux上这样的动态加载器吗?我不确定自己是否朝着正确的方向前进,所以欢迎任何建议。