Как быстро передать большой архив (~ 16 ГБ)

То, о чем вы просите, как написал Томас Дики, это кросс-компилятор.

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

Каковы некоторые из этих зависимостей? Вот лишь некоторые из них:

  1. Во-первых, ваша целевая система, скорее всего, является размещенной средой поэтому ваш кросс-компилятор должен предоставить исполняемый код запуска/бинарные файлы, чтобы позволить целевой системе фактически добраться до точки вызова вашей функции main().
  2. Существует множество деталей, определяемых реализацией в целевой системе, например, "Насколько велик long". Они могут отличаться, поэтому вам нужна, за неимением лучшего слова, целевая реализация. В общем случае, это означает, по крайней мере, все заголовочные файлы для вашей целевой системы, которые являются "частью реализации". Определение того, какие из них вам нужны, а какие нет, в лучшем случае является утомительной задачей. Так что просто возьмите их все, верно? Ну, это увеличивает количество зависимостей, о которых вам придется беспокоиться.
  3. Итак, теперь вы можете компилировать - но вы не можете линковать без библиотек целевых систем (это относится к #1 выше, но нужно еще больше). Хотя теоретически вы можете линковать только со статическими библиотеками целевых систем и без динамических библиотек целевых систем , без всех библиотек вы не можете быть уверены, что двоичный файл, созданный вашим кросс-компилятором, не выдаст ошибку "missing symbol", когда вы попытаетесь запустить его на целевой системе.

Итак, для создания кросс-компилятора вам нужны заголовочные файлы, библиотеки и стартовые двоичные файлы/код для вашей целевой системы - и как только вы его установите, вы должны поддерживать его - если целевая система получает исправления, которые влияют на ваш кросс-компилятор, вам нужно воспроизвести эти изменения в вашем компиляторе. Как вы определите, что патч "123456" или RPM "abc" влияет на ваш кросс-компилятор?

И, возможно, я многое пропустил.

Должно быть совершенно очевидно, почему никто не беспокоится о кросс-компиляторах, когда целевой системой является что-то, что легко создать на аппаратном обеспечении x86, например, Linux/Solaris/Windows/BSD, и даже почему, когда целевой системой является что-то более сложное (например, Solaris на SPARC), почти все, кому нужно компилировать для этой цели, просто покупают для компиляции какое-то low-end совместимое оборудование.

1
11.11.2015, 10:01
0 ответов

Теги

Похожие вопросы