帮助编译(需要旧库)

Lin*_*oln 4 shared-library compiling

我需要运行一个科学软件,但它需要较旧的库,我不想搞砸我当前的系统。我想过在 VM 中使用旧的 ubuntu 版本。但我需要哪个?

该软件可以在这里获得

自述文件说:

Makefile 假定您使用的是 wxWindows 2.4.2,并且它安装在 /usr(/usr/lib/、/usr/include/wx 等...)中。然而,它可能在 /usr/local 中;在这种情况下,适当修改 Makefile 的第 18 行。

此外,wxWindows 2.4.2 与最新版本的 GTK 存在冲突,因此欢迎您使用最新版本的 wxWindows (2.6.0)。但是,这也需要更改 Makefile,即第 16-18 行。此外,这个新版本的 wxWindows 将库分成不同的部分;基础、核心和GL。您需要链接到所有这些库。

如果您通过aseem@agarwala.org 给我发送电子邮件,我可以向您发送定制为 2.6 的 Makefile。

更新:我的代码不适用于 2.6。2.4.2 不能用较新版本的 g++ 编译。所以,这是一个我没有时间解决的问题。对不起。您唯一的希望是使用较旧的 g++。

Ric*_*rri 5

我在您发布的说明中看到的真正问题是,他们要求使用旧版本g++:安装不同的库版本相对简单,安装和运行不同的编译器并非易事。此外,这些说明没有说明您应该使用哪个版本的 g++...

如果我要这样做,我会按照以下步骤进行:

  1. 正如在 Ubuntu 软件包档案中搜索所显示的那样,没有 Ubuntu 版本具有 wxWindows 2.4.2;dapper有 2.4.4,hardyjaunty有 2.4.5。这可能是一个兼容版本(补丁级别编号不会更改 API),但只能通过尝试来了解...他们也应该有正确的 g++(因为它用于编译 Ubuntu 包)。

  2. 安装deboostrap程序,并用它在目录中安装旧的Ubuntu的副本foo

    须藤 deboostrap jaunty foo/

  3. 下载源代码并将它们放在某个目录下 foo/

  4. 使用chroot进入旧环境并编译:

    $ sudo -s
    # chroot foo/
    (foo)# cd /source/directory; make
    
    Run Code Online (Sandbox Code Playgroud)

请注意,在 chroot 中,您只能访问以下文件foo/- 这已成为新的根目录(只需退出 shell 即可恢复正常)。

您也可以使用虚拟机代替 chroot 环境(替换步骤 2.、4.);恕我直言,chroots 允许更无缝的使用,尽管它们设置起来可能有点棘手。