Fedora 21上的Kylix

时间:2015-06-17 18:43:18

标签: linux c++builder fedora-21 kylix

我们有一个基于Borland Kylix C ++的应用程序。该应用程序仍在使用中,我们维护一台安装了Kylix IDE的Red Hat 9虚拟机以继续开发。我们知道它已经很老了,但有一段时间是我们的选择。

在Fedora 21之前,我们可以毫无问题地运行此应用程序,但在这个新版本中,我们的库无法加载,导致分段错误错误。

这是简单加载库的测试程序:

#include <stdio.h>
#include <dlfcn.h>

void main()
{
  int *p = dlopen("libX.so", RTLD_NOW);
  if (p == NULL)
  {
    printf("Erro = %s\n", dlerror());
  }
}

libX.so是用Kylix C ++构建的。 dlopen执行时出现错误。我们不需要加载方法或执行方法来获取错误。使用strace来分析错误,我们得到了这个:

open("i686/sse2/libborunwind.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("i686/libborunwind.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("sse2/libborunwind.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("libborunwind.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\21\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=27125, ...}) = 0
close(3)                                = 0
mprotect(0xb7170000, 4096, PROT_READ)   = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0xb85fbad4} ---
+++ killed by SIGSEGV (core dumped) +++

libborunwind.so是一个Kylix运行时库,因此我们没有源代码来查看正在发生的事情。似乎旧的Kylix库与Fedora 21(libc等)的新库不兼容。

有没有办法在最近的Linux发行版中运行旧的编译代码?

0 个答案:

没有答案