2015-02-24 2 views
0

Я разрабатываю несколько программ на своем компьютере, который запускает Ubuntu 64bit.можно ли скомпилировать c для многих архитектур на Linux?

Я хотел бы запустить эти приложения на другом ПК, который работает на 32. Возможно ли компиляция на моей машине или мне нужно перекомпилировать приложения на другом?

+1

Да. Вы даже можете скомпилировать программы, которые запускаются на вашем смартфоне, или даже на микроволновой печи (если она достаточно умна). Он называется «кросс-компиляция». –

ответ

0

Есть настройки/флаги компилятора, которые должны позволять вам делать это на вашем компьютере; которые вам нужны, зависит от используемого вами компилятора.

1

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

Предполагая, что компилятор GCC, вы должны добавить только -m32 в свои флаговые компиляции, чтобы заставить их работать на 32-битной системе; если все остальные вещи равны. Убедитесь, что в вашей системе установлены необходимые 32-разрядные зависимости (это означает, что базовые библиотеки C и 32-разрядная версия для каждой библиотеки связаны с вашими приложениями).

Поскольку вы только компилируете для x86 на 64-битном узле, путь к этому обычно прост. Я рекомендовал бы, однако создание выделенной среде, которую можно использовать для компиляции - как правило, своего рода chroot (см pbuilder, schroot, CHROOT, Debootstrap и другие).

Смежные вопросы