Невозможно скомпилировать и запустить простое приложение Ada - PullRequest
2 голосов
/ 19 октября 2019

Очень плохо знаком с Ada и начал учиться, делая урок Hello World в GNAT GPS. Мне трудно понять ошибку при компиляции кода. Ошибка выглядит как проблема dir исходного файла. Но я крайне незнаком с выводом ошибок в IDE этого типа.

Вот код, который я пытаюсь скомпилировать и запустить (file: main.adb):

with Ada.Text_IO;

procedure Main is

begin
   Ada.text_IO.Put_Line("Hello world!");
   null;
end Main;

Изображение кода и GPS IDE

Вот ошибка сборки, которую я получаю:

gprbuild -d -P/Users/rniller/Desktop/Test/default.gpr /Users/rniller/Desktop/Test/src/main.adb
Compile
   [Ada]          main.adb
Bind
   [gprbind]      main.bexch
   [Ada]          main.ali
Link
   [link]         main.adb
ld: library not found for -lSystem
collect2: error: ld returned 1 exit status
gprbuild: link of main.adb failed
gprbuild: failed command was: /users/rniller/opt/gnat/2019/bin/gcc main.o b__main.o -L/Users/rniller/Desktop/Test/obj/ -L/Users/rniller/Desktop/Test/obj/ -L/users/rniller/opt/gnat/2019/lib/gcc/x86_64-apple-darwin17.7.0/8.3.1/adalib/ /users/rniller/opt/gnat/2019/lib/gcc/x86_64-apple-darwin17.7.0/8.3.1/adalib/libgnat.a -Wl,-rpath,@executable_path/ -Wl,-rpath,@executable_path/../../..//opt/gnat/2019/lib/gcc/x86_64-apple-darwin17.7.0/8.3.1/adalib -o main
[2019-10-19 11:34:54] process exited with status 4, elapsed time: 01.95s

Я предполагаю, что неправильно установил Аду и / или GPS. Есть предложения или мысли? Спасибо.

Обновление / Дополнительные мысли:

Я предполагаю еще одну вещь: проект не может найти исходный код Ada, так как проект сохраненна / рабочий стол?

1 Ответ

4 голосов
/ 19 октября 2019

Я вижу, что вы работаете в macOS и используете GNAT CE 2019. Вам нужно установить Xcode (из магазина приложений, в разделе Develop).

Я написал это здесь ,Подводя итог, можно сказать, что

  • В будущем Apple не будет предоставлять включения в /usr/include, а вместо этого в SDK
  • clang знает об этом, а GCC нет,
  • Ответ AdaCore состоял в том, чтобы сгенерировать их компилятор с системным корнем внутри Xcode SDK,
  • системный корень влияет как на библиотеки, так и на заголовки,
  • , поэтому отсутствие Xcode означает отсутствиесистемные библиотеки (несмотря на то, что библиотеки /usr/lib как всегда!)
...