Кросс-компилятор для Linux на Mac OS X?

Я читал много документов в Интернете о создании кросс-компилятора для Linux на Mac OS X, но не могу заставить его работать.

Похоже, что никто не может помочь мне с вопросом: Получение GMP для работы с GCC 4.5.2

Есть ли более простой способ создать кросс-компилятор?


person Daniel    schedule 09.03.2011    source источник
comment
Для целей arm и aarch64 linux я поддерживаю предварительно скомпилированные наборы инструментов OSX для загрузки: thinkski.github.io /osx-arm-linux-toolchains   -  person thinkski    schedule 06.08.2019


Ответы (2)


Чтобы создавать двоичные файлы для архитектур, отличных от вашего узла сборки, вам нужно гораздо больше, чем просто кросс-компилятор — вам нужен полноценный набор инструментов, создание которого может быть настоящей проблемой, как вы, вероятно, обнаружили.

Пара подходов:

  • Используйте правильный дистрибутив Linux на виртуальной машине, например VirtualBox. Если вы хотите собрать двоичные файлы только для Linux/i386 на хосте MacOSX/x86_64, это, на мой взгляд, самое простое, безопасное и чистое решение. Конечно, это не кросс-компилятор, но он работает и имеет дополнительное преимущество, заключающееся в том, что вы действительно можете тестировать исполняемые файлы.

  • Используйте такой скрипт, как crosstool-NG (потомок оригинального crosstool) для автоматической сборки цепочки инструментов — определенно проще, чем создавать ее самостоятельно, хотя вам, возможно, придется пойти на компромисс для более старых версий компилятора.

person thkala    schedule 09.03.2011

Тебе надо:

  1. установить инструменты базовой сборки xcode
  2. установить дополнительные инструменты командной строки xcode
  3. установить доморощенный
  4. установите инструменты сборки homebrew
    4.1 brew install crosstool-ng mpfr gmp grep
    4.2 brew tap homebrew/dupes
  5. создайте том с учетом регистра, используя «дисковую утилиту»
  6. использовать этот объем для построения самой цепочки инструментов
    6.1 создать базовую конфигурацию (для меня это arm cortex a8)
    6.1.1 ct-ng arm-cortex_a8-linux-gnueabi
    6.2 используйте menuconfig (ct-ng menuconfig) для настройки конфигурации
    6.2.1. отключить fortran и java (компилятор c)
    6.2.2. отключить статическое связывание (компилятор c)
    6.2.3. измените пути на том, который вы создали выше (пути и прочие параметры)
    6.2.4. удалить dmalloc (средства отладки)
    6.3 вызвать сборку:
    6.3.1 ulimit -n 1024
    6.3.2 ct-ng построить

большое спасибо списку crosstools-ng.

person jolyon    schedule 03.01.2013
comment
Этот звук... круто. Но зачем нам новый том для построения цепочки инструментов? - person cxwangyi; 10.02.2015
comment
привет cxwangyi - если мне не изменяет память, я сделал это, чтобы гарантировать, что громкость чувствительна к регистру. Желаем удачи в этом. Если вы боретесь, я нашел список crosstools-ng очень полезным. И да, это круто :) - person jolyon; 11.02.2015