【问题标题】:How can I get Ada GNAT gcc 7.3 for Solaris 11?如何获得适用于 Solaris 11 的 Ada GNAT gcc 7.3?
【发布时间】:2020-01-05 03:07:31
【问题描述】:

我们有一个 gcc 7.3 的 Solaris 11 系统,我们需要安装 Ada 包。在 Linux gcc 7 上,Ada/GNAT 是 gcc 安装的一部分:

 apt install gcc

我访问过的 AdaCore 貌似 Solaris (SPARC) 已经不在列表中了。我需要使用 Ada95,而且无论如何我们都希望在 Linux 和 Solaris 上使用相同的编译器。

pkg install gcc

只安装了各种C++命令和Fortran。

pkg install gcc-ada

和 gcc7ada 之类的变体,找不到要安装的东西。

如果必须的话,我们可以重建 GCC 7 的 Ada 组件,但是我还没有找到一个明确的 cood-book 风格“如何...”。

希望您能按优先顺序向我指出这些项目,以帮助我们重回正轨。

  1. 用于 gcc7/Solaris 11 spark 的 Solaris 11 gcc-ada 软件包和软件包存储库。
  2. 一个“替代”包存储库,我可以检索 GCC Ada 工具。
  3. 预构建 GCC 7 Ada 模块,我们可以将其复制到正确的位置。
  4. 适用于 Solaris 的现成构建 Ada/GNAT 项目以及如何下载和开始构建。
  5. 在 Solaris(或 Unix)上使用 gcc 7 下载和构建 gcc-ada 的说明。

从前几天开始在 Gnu Compiler Collection、Oracle、包管理器搜索、google 等上进行搜索......这些天似乎在 Solaris 上几乎不支持 CGG Ada。

我对该列表之外的其他解决方案非常感兴趣。例如,有没有人从 Linux 交叉编译到 Solaris?无论如何,这对 Solaris 机器上的 GDB 是否有效?

期待您的建议。

【问题讨论】:

    标签: solaris gnat gcc7


    【解决方案1】:

    请注意,我对 Solaris 了解不多,但在 Google 上快速搜索后,我找到了 OpenCSW 网站。本站提供gcc4adagcc5ada的包。

    似乎gcc5ada 是使用makefile 构建的(如发现here,特别注意第424 行)。 gcc7ada 存在类似的 makefile(如发现 here,特别注意第 426 行)。然而,虽然“gcc7ada”包似乎可以用后一个makefile创建,但它并没有在OpenCSW.org网站上发布(网站不再更新?)。

    您可以尝试先安装gcc5ada,然后使用这个旧的 GCC/GNAT 编译器作为引导程序来编译所需的版本(使用 GCC 7 生成文件)。

    【讨论】:

    • 是的,谢谢@DeeDee——我正在寻找 GCC v7(或 8)Ada 版本。不久前我发现了那些旧版本。在查看那个包 makefile 时,GCC 需要 Ada 来构建 Ada,我没有看到 makefile 调用 gnat 或 gnatmake(???)。
    • 是的,您需要一个可以工作的编译器。另请参阅this 页面上的“构建 Ada 编译器”。 GNAT 本身(前端)是用 Ada 编写的。
    • 我快速浏览了一下,但也找不到实际启动 GCC 构建的行。但是,这些 Makefile 是完整构建系统的一部分。如果您考虑朝这个方向前进,那么您可能想问一个关于 SO 的新问题,特别是关于如何使用 GAR Solaris 包构建系统中的 Makefile 从源代码构建包。
    【解决方案2】:

    我已经使用以下过程在 OpenIndiana (Hipster 2020/10) 上使用 GNAT 成功构建了 gcc 7.50(x86_64 本机和 i386 交叉编译器)。

    1. 从 Dragonlace 下载引导编译器http://downloads.dragonlace.net/src/ada-bootstrap.x86_64.solaris.511.tar.bz2

    2. https://github.com/illumos/gcc/tree/il-7_5_0获取 illumos gcc 7.5.0 源代码

    3. 将引导编译器的 bin 目录放在 $PATH 的前面,将 /usr/bin/gcc /usr/bin/cpp /usr/bin/g++ 替换为引导编译器目录中对应的符号链接(请参阅下面的注释重新g++ 和 c++)

    4. 确保你有 gnu-binutils 和 gmake;然后运行 ​​contrib/download_prerequisites

    5. 配置为 --enable-languages='c ada c++' --build=x86_64-aux-solaris2.11 --enable-threads=posix --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath - -disable-nls --disable-shared --disable-lto --disable-libstdcxx-pch --enable-multilib --with-gnu-as --with-as=/usr/bin/gas --without-gnu -ld --with-ld=/usr/bin/ld

    6. gmake 然后 gmake 安装

    注意事项: 此设置应该足够接近 Solaris 11 才能工作。如果没有,请尝试使用常规 gcc 7.5.0 版本而不是 illumos-modified 分支。

    如果您在链接阶段遇到困难,请尝试使用 gcc ld,但您绝对应该首先尝试使用 Solaris ld。 gnu as (gas) 使构建过程更加顺利。我没有任何问题,但是如果您在第 1 阶段结束或第 2 阶段开始时遇到问题,请尝试设置 $CONFIG_SHELL=/usr/bin/ksh - 我认为它已修复,但至少与较旧的 gcc 版本需要指定 ksh,因为内置 sh 有一些非 POSIX 特性,这些特性不适用于某些组件的 makefile

    如果不构建 gcc c++ 并使用带有完整引导程序的 g++,我无法轻松编译 gnat 的支持库之一。你也许能弄清楚,但阻力最小的路径可能是构建 gcc c++ 并将 g++ 符号链接放在 /usr/bin 中,这是 makefile 想要找到它的地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多