0

我们有一个 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 风格“How To ...”(目前)。

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

  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 是否有效?

期待您的建议。

4

2 回答 2

1

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

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

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

于 2019-09-02T21:11:26.663 回答
1

我已经使用以下过程在 OpenIndiana (Hipster 2020/10) 上使用 GNAT 成功构建了 gcc 7.50 (x86_64 native with i386 cross-compiler)。

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

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

  3. 将 bootstrap 编译器的 bin 目录放在 $PATH 的前面,将 /usr/bin/gcc /usr/bin/cpp /usr/bin/g++ 替换为 bootstrap 编译器目录中对应的符号链接(请参阅下面的注 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 想要找到它的地方。

于 2021-04-09T20:58:11.507 回答