Кросс-компиляция в Ma c OS Mojave 10.14.5 - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь скомпилировать следующий простой код

#include <stdio.h>
#include <stdlib.h>
int main() {
  int i;
  for (i = 0; i < 100; i++) {
    printf("Hello World %d!\n", i);
  }
  do {
    i++;
  } while (1);
}

на плату nRF52840Dk с процессором Arm Cortex-M4. Мой хост-компьютер - Macbook Pro 15 '' с ОС MacOS Mojave 10.14.5. Я надеюсь запустить программу «голое железо» (без какой-либо ОС) для запуска.

Когда я запускаю следующее:

clang --target=armv7-none-gnueabi foo.c Я получаю foo.c:1:10: fatal error: 'stdio.h' file not found.

Теперь я немного осмотрелся и обнаружил, что эта проблема может быть связана с другим расположением /usr/include в более новых вариантах OSX.

Я пробовал следующие решения без дальнейшего развития:

  1. xcode-select --install

Уже сделано. У меня установлены инструменты командной строки xcode.

Запустите open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg и продолжите установку

Я предполагаю, что это может быть возможной ошибкой. Когда я запускаю это, я сталкиваюсь с установщиком, соглашаюсь с лицензией, но затем я получаю это предупреждение Installing this package may damage your system, and the installation may fail. To stop the program and the installation, click “Cancel Installation”. Когда я продолжаю, установка каждый раз завершается неудачей. Может ли это быть связано с тем, что Ma c запретил запуск 32-битных приложений? Как тогда люди кросс-компилируются на платы ARM на новых Mac?

Установите для переменной среды CPATH значение /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include

Попытка также предпринималась, но это приводит к взрыву предупреждений и ошибок. Хотя кажется, что stdio.h найдено, но выдает следующую ошибку:

error: Unsupported architecture
#error Unsupported architecture
 ^

и ряд других ошибок.

Так что я не уверен, что делать дальше. Может ли кто-нибудь просветить меня об этом?

...