2012-06-27 92 views
4

我已经在Ubuntu服务器上编译了我的预加载文件(x32和x64有两个文件)。在哪里可以获得列表,我将在哪些操作系统中看到我编译的文件是兼容的,以及我应该重新编译兼容性的内容?G ++ ABI兼容性列表

谢谢!

回答

4

使用Linux App Checker由ISPRAS和The Linux Foundation开发。它旨在为Linux应用程序执行跨发行版兼容性检查。请参阅示例报告here

enter image description here

+0

这看起来相当强大,并且比运行多个虚拟机更流畅。 –

+0

谢谢!像FeeBSD这样的unix操作系统,这个检查器可以检查它吗? – Robert

+0

Linux二进制兼容性在FreeBSD中默认不打开。你需要很多额外的软件。请参阅FreeBSD手册中的[第11章Linux二进制兼容性](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/linuxemu.html)。所以,检查器不支持它。 – aponomarenko

0

我会先尝试在虚拟机中的各种Linux发行版上执行该程序。选择前三名最受欢迎的Linux发行版或您的用户最有可能拥有的发行版。另外,你最好分发一个静态链接的二进制文件,并将源代码提供给希望自己构建它的其他人(如果允许分发源代码的话)。

0

我不知道我是否完全理解你,但是,如果我的理解没有错,我会从ldd -v开始。任何体系结构兼容的操作系统都有依赖库安装在兼容版本中应该可以工作。接下来,如果你打算支持更多的体系结构,你需要明确地知道它并为它的每一个进行交叉编译。

所以,你必须重新编译: 1.每个不同的架构。 2.当库版本不兼容时。

这最后一个更棘手,因为你的代码可能需要特定的版本才能工作,但无论如何你必须从头开始了解它。

请告诉我,如果它不是你想要的。

+0

我只是想检查我的Linux编译LD_PRELOAD将上下工夫,例如Solaris。我的编译命令是g ++ -fPIC -m32 -shared -Wl,-soname,test.so -ldl -o test.so test.cpp – Robert

+0

我不认为Solaris二进制装载器会加载没有任何抱怨的Linux编译的ELF,即使它针对相同的架构。我无法对其进行测试,但如果您可以通过一个简单的完全静态链接测试来完成测试,那将非常高兴。我的猜测是,当您更改操作系统(Solaris,BSD等)时,您将始终需要重新编译。 – j4x