gcc - Mac OS 的链接器问题
问题描述
我最近开始在我的系统编程课上使用 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 安装它?
提前非常感谢!
解决方案
在我的 MacOS 10.14 上,以下内容对我有用,而无需下载 Xcode 的大量 blob,我既没有带宽也没有磁盘空间。我不知道这是否仍然适用于 MacOS 10.15(不打算升级)。
大部分信息来自 Simon Wright 的博客文章:https ://forward-in-code.blogspot.com/2019/06/macos-software-development-kit-changes.html
- 您只需要 Xcode 命令行工具(不需要 Xcode):
xcode-select --install
- 现在解压缩包含的标题:
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
- 并告诉 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 命令行工具或者它们缺少 headers 包),那么您将不得不按照 GNAT 自述文件安装 Xcode。
推荐阅读
- ios - JSONSerialization 解析问题:
- node.js - 如何将新工作表添加到现有电子表格中?带有 Node.js 的 Google 表格 API
- node.js - node csv文件上传同步导入后跟mongoose find
- php - 如果 Json 中的值等于设置值,则返回 Name [PHP]
- ui-automation - 我可以使用 Cucumber 和 Selenium Grid 同时在不同节点上运行脚本吗?
- node.js - 同时运行 Node.js server 和 yarn serve vue-cli app
- matlab - 如何在 Matlab 中计算“比较”功能
- f# - 向 C# 公开 F# Map 类型
- android - 按钮 savedInstanceState 和 onRestoreInstanceState
- ios - Alamofire 快速发布请求正文