【问题标题】:Issue with linker for Mac OSMac OS 的链接器问题
【发布时间】:2020-08-30 19:44:44
【问题描述】:

我最近开始在我的系统编程课上使用 ada 进行实验室,我可以说它真的很有趣。

我在计算机实验室进行了大部分测试以进行测试,我决定在 MacBook 中安装编译器及其链接工具。

虽然安装完成并且似乎没有问题,但当我尝试打印经典的 hello world 程序时,我收到以下消息:

gprbuild greet.adb                                                                                                                                                                                                            
using project file /Users/xyderos/opt/GNAT/2020/share/gpr/_default.gpr
Bind
[gprbind]      greet.bexch
[Ada]          greet.ali
Link
[link]         greet.adb
ld: library not found for -lSystem
collect2: error: ld returned 1 exit status
gprbuild: link of greet.adb failed
gprbuild: failed command was: /users/name/opt/gnat/2020/bin/gcc greet.o b__greet.o - L/Users/name/ada/ -L/Users/name/ada// -L/users/name/opt/gnat/2020/lib/gcc/x86_64-apple-darwin17.7.0/8.4.1/adalib/ /users/name/opt/gnat/2020/lib/gcc/x86_64-apple-darwin17.7.0/8.4.1/adalib/libgnat.a -Wl,-rpath,@executable_path/ -Wl,-rpath,@executable_path/..//opt/gnat/2020/lib/gcc/x86_64-apple-darwin17.7.0/8.4.1/adalib -o greet

我对 lSystem 库感到非常困惑。

Mac 上好像没有这个库(也许我需要安装 Xcode?)。

有没有人知道这个问题,或者有没有更好的方法来通过 brew 安装它?

提前非常感谢!

【问题讨论】:

  • 以前确实需要安装 Xcode。不过,我没有跟上 Mac 的最新动态。
  • 我认为“安装 Xcode”会是答案(也可能是),但编译器已经清楚地找到了 asld,那么为什么不 libSystem.dylib?还是安装 Xcode。

标签: gcc linker linker-errors ada gnat


【解决方案1】:

在我的 MacOS 10.14 上,以下内容对我有用,而无需下载 Xcode 的大量 blob,我既没有带宽也没有磁盘空间。我不知道这是否仍然适用于 MacOS 10.15(不打算升级)。

大部分信息来自 Simon Wright 的博客文章:https://forward-in-code.blogspot.com/2019/06/macos-software-development-kit-changes.html

  1. 您只需要 Xcode 命令行工具(不是 Xcode):xcode-select --install
  2. 现在解压缩包含的标题:sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
  3. 并告诉 GNAT 在哪里可以找到它们:mv ce2109-specs /usr/local/opt/GNAT/2019/lib/gcc/x86_64-apple-darwin17.7.0/8.3.1/specs

ce2109-specs 文件来自上面的博客文章。这为我完成了这项工作,GNAT 现在可以链接 MacOS 10.14 上的工作二进制文件。

如果您使用的是 10.15 并且它不起作用(因为没有更多的 Xcode 命令行工具或者它们缺少头文件包),那么很遗憾,您将不得不按照 GNAT 自述文件安装 Xcode。

【讨论】:

  • 我没有为 GNAT CE 2020 重新设计它;由于各种原因,specs 文件发生了更改,因此ce2019-specs 可能会使编译器失效。如果是这样,只需将其删除。 Xcode 11.6 for Catalina 使用 17 GB(9 GB 数据,其余我认为是大量不使用最小磁盘分配的小文件的影响)。
  • Catalina 有命令行工具,但遗憾的是在/usr/include 中不再有安装系统头文件的方法。除了我想“手工”复制它们。
猜你喜欢
  • 2013-05-15
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
相关资源
最近更新 更多