Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция

ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠΌ. Н. Π­. Π‘Π°ΡƒΠΌΠ°Π½Π°
Bauman National Library

ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты

ΠšΡ€ΠΎΡΡ-компилятор

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ кросс-компиляторов

Канадский крСст

Канадский крСст-это Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° построСния кросс-компиляторов для Π΄Ρ€ΡƒΠ³ΠΈΡ… машин. БистСма конфигурирования ΠΈ сборки GNU позволяСт ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π½Π° систСмС, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ Ρ‚ΠΎΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡΠΎΠ±ΠΈΡ€Π°Π»ΠΈΡΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ срСдства. Π˜Π½Ρ‹ΠΌΠΈ словами, ΠΎΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ сборку ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ кросс-компилятора.

ΠŸΡ€ΠΈ использовании канадского крСста c GSS ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π²ΠΈΠ΄Π°:

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция

ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ кросс-компилятор (4) Π½Π΅ смоТСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° построСниС ΠΌΠ°ΡˆΠΈΠ½Ρ‹ А; вмСсто этого ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° машинС B для компиляции прилоТСния Π² исполняСмый ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ Π±Ρ‹Ρ‚ΡŒ скопированным Π½Π° ΠΌΠ°ΡˆΠΈΠ½Ρƒ C ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π‘.

Π’Π΅Ρ€ΠΌΠΈΠ½ канадский крСст Π²ΠΎΠ·Π½ΠΈΠΊ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² Ρ‚ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΈΡΡŒ, Π² КанадС Π±Ρ‹Π»ΠΎ Ρ‚Ρ€ΠΈ Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… политичСских ΠΏΠ°Ρ€Ρ‚ΠΈΠΈ.

ΠšΡ€ΠΎΡΡ-компиляция с GCC

GCC, бСсплатная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ компиляторов, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ настроСна для кросс компиляции. Она ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСство ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΈ языков.

ΠšΡ€ΠΎΡΡ-компиляциСй GCC Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡Π°ΡΡ‚ΡŒ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ C Π±Ρ‹Π»Π° доступна Π½Π° хост-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для составлСния ΠΏΠΎΠ»Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ C, Π½ΠΎ этот Π²Ρ‹Π±ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ являСтся использованиС Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ C, содСрТащий Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самыС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для компиляции C Π² исходный ΠΊΠΎΠ΄.

БСсплатный Pascal

БСсплатный Паскаль Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ с самого Π½Π°Ρ‡Π°Π»Π° Π² качСствС кросс-компилятора. Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» компилятора (ppcXXX Π³Π΄Π΅ XXX-цСлСвая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°) способСн ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ для всСх ОБ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. НапримСр, ppc386 способСн ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ для i386-Linux, для i386-Win32 ΠΈ для i386-go32v2 (DOS) ΠΈ всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… ОБ. Для компиляции Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° кросс-вСрсии компилятора Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ построСна ΠΏΠ΅Ρ€Π²ΠΎΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс-компиляция?

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ пСрСкрСстная компиляция?

ΠšΡ€ΠΎΡΡ-компиляция – это Π°ΠΊΡ‚ компиляции ΠΊΠΎΠ΄Π° для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ систСмы (часто Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ) Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ систСмС, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ хостом.

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° цСлСвая систСма слишком ΠΌΠ°Π»Π° для размСщСния компилятора ΠΈ всСх ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ².

ΠžΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ мноТСство встроСнных систСм, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ консоли.

β€œΠŸΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚Π½Π°Ρ компиляция” Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄, скаТСм, Π² ящик Linux с Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΎΠΊΠ½Π΅ MAC ΠΈΠ»ΠΈ Windows. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это дСлаСтся с использованиСм ΠΏΠ»Π°Π³ΠΈΠ½Π° пСрСкрСстной компиляции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»Π΅Π³ΠΊΠΎ доступСн с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Π΅Π±-сСрвСров ΠΏΠΎ сСти. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ кросс-компиляции Π² свой Linux-Π±Π»ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для компиляции для ΠΎΠΊΠΎΠ½ Windows. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π»ΠΈΠ±ΠΎ Π² ΠΏΠΎΠ»Π΅ Linux/* NIX, Π»ΠΈΠ±ΠΎ Π² качСствС ΠΎΠΏΡ†ΠΈΠΈ для компиляции ΠΈ соСдинСния исполняСмого Ρ„Π°ΠΉΠ»Π° Windows. Π­Ρ‚ΠΎ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для Π²Π½Π΅ΡˆΡ‚Π°Ρ‚Π½ΠΎΠ³ΠΎ программиста, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ доступ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ядру Linux/Windows/MAC. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ для кросс-компиляции позволят ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ мноТСство ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ»ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° README ΠΏΠ»Π°Π³ΠΈΠ½Π°.

Π£ вас Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ кросс-компиляции?

ΠšΡ€ΠΎΡΡ-компилятор ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ.

Π­Ρ‚ΠΎΡ‚ процСсс называСтся кросс-компиляциСй.
см. ссылку для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ кросс-компиляция

Π’ строгом смыслС, это компиляция ΠΊΠΎΠ΄Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΌ хостС, прСдназначСнная для запуска Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ.

Π§Π°Ρ‰Π΅ всСго ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ со ссылкой Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ совмСстимы с Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ с хостом – Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, созданиС Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² RISC Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ CPU CISC ΠΈΠ»ΠΈ 64-разрядныС Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² 32-разрядной систСмС. Или, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, созданиС ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° встроСнных устройствах (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, с использованиСм Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ процСссора ARM) Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Π½Π° Π±Π°Π·Π΅ ПК Π½Π° Π±Π°Π·Π΅ ПК.

ΠšΡ€ΠΎΡΡ-компилятор – это компилятор, способный ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ исполняСмый ΠΊΠΎΠ΄ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ Ρ‚ΠΎΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ компилятор.
НапримСр, компилятор, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ПК с Windows 7, Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° смартфонС Android, являСтся кросс-компилятором.

ΠšΡ€ΠΎΡΡ-компилятор Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для компиляции Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСдоступна для запуска компилятором, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° встроСнной систСмы, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эти систСмы Π½Π΅ содСрТат ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.
ΠŸΡ€ΠΈ ΠΏΠ°Ρ€Π°Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ машинС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, ΠΈ кросс-компилятор ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ» для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ основного источника.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

РусскиС Π‘Π»ΠΎΠ³ΠΈ

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС кросс-компиляции

Π“Π»Π°Π²Π° 1 Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² кросс-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ

1.1 Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс-компиляция

Π’Π΅, ΠΊΡ‚ΠΎ Π΅Ρ‰Π΅ Π½Π΅ занимался встроСнным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ кросс-компиляции, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ кросс-компиляция? Π§Ρ‚ΠΎ ΠΎΠ½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚?

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс-компиляция, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ локальная компиляция.

Под локальной компиляциСй ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ компиляции скомпилированная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ наша общая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния относится ΠΊ локальной компиляции:

НапримСр, Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ x86 ΠΌΡ‹ пишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΡ… Π² исполняСмыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ инструмСнты Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ x86 для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ исполняСмых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для самой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ x86. Π­Ρ‚ΠΎΡ‚ процСсс компиляции называСтся локальной компиляциСй.

ΠšΡ€ΠΎΡΡ-компиляция ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ понята ΠΊΠ°ΠΊ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ компиляции скомпилированная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ, Π½ΠΎ сама ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° компиляции Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

НапримСр, Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ x86 ΠΌΡ‹ пишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΡ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ARM. Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ x86, ΠΈ для запуска ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ARM.

1.2 ΠŸΠΎΡ‡Π΅ΠΌΡƒ происходит кросс-компиляция

Основная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° кросс-компиляции:

1.3 ΠŸΠΎΡ‡Π΅ΠΌΡƒ кросс-компиляция Ρ‚Ρ€ΡƒΠ΄Π½Π°?

Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ кросс-компиляции Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΄Π²ΡƒΡ… аспСктах:

Π Π°Π·Π½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ характСристики ΠΌΠ°ΡˆΠΈΠ½Ρ‹

Π‘Ρ€Π΅Π΄Π° хоста отличаСтся ΠΎΡ‚ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ срСды Π²ΠΎ врСмя кросс-компиляции

Для ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ сравнСния, поТалуйста, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, которая Π±Ρ‹Π»Π° написана ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ, поэтому я Π½Π΅ Π±ΡƒΠ΄Ρƒ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² подробности здСсь:Introduction to cross-compiling for Linux

Π“Π»Π°Π²Π° 2 ΠšΡ€ΠΎΡΡ-компиляция Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ

2.1 Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° кросс-компиляции

Π Π°Π·Π±Π΅Ρ€ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс-компиляция, Π° Π·Π°Ρ‚Π΅ΠΌ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° кросс-компиляции.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, процСсс компиляции прСдставляСт собой слоТный процСсс, состоящий ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π² порядкС, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция

Π—Π°Ρ‚Π΅ΠΌ процСсс компиляции Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, сборку, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, каТдая подфункция Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ инструмСнта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вмСстС ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ инструмСнтов.

Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя процСсс компиляции являСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ процСссом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ порядок, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ инструмСнты. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ инструмСнт соСдинСн ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π² соотвСтствии с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, которая ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Ρ†Π΅ΠΏΠ½ΡƒΡŽ структуру.

ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠšΡ€ΠΎΡΡ-компиляция Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ инструмСнтов, состоящий ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… подинструмСнтов, сформированных для компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° кроссплатформСнной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΎΠ½ скрываСт Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, компиляции, сборки, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΈ Ρ‚. Π”. Когда ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ исходный Ρ„Π°ΠΉΠ» (.c), ΠΎΠ½ автоматичСски Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ подинструмСнты Π² соотвСтствии с процСссом компиляции ΠΈ автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (.bin). ).

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, кросс-компилятор ссылаСтся Π½Π° кросс-ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ gcc, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ для удобства ΠΌΡ‹ часто Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ кросс-компилятор прСдставляСт собой Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ кросс-инструмСнтов. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ проводится Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя понятиями, ΠΎΠ±Π° относятся ΠΊ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ компиляции

2.2 ΠŸΡ€Π°Π²ΠΈΠ»Π° имСнования Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ кросс-компиляции

Когда ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ кросс-компиляции, ΠΌΡ‹ часто Π²ΠΈΠ΄ΠΈΠΌ Ρ‚Π°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π°:

Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ прСфикс:

ΠŸΡ€Π°Π²ΠΈΠ»Π° имСнования этих Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ кросс-компиляции каТутся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ являСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π½Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΎΡΡŒ Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ компиляции Π½Π΅ слСдуСт этому ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ, ΠΈ нСясно, Π²Ρ‹Π·Π²Π°Π½ΠΎ Π»ΠΈ это историчСскими ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌΠΈ. Если ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π²ΠΈΠ΄Π΅Π» ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС этого ΠΏΡ€Π°Π²ΠΈΠ»Π° Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, поТалуйста, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π“Π»Π°Π²Π° 3 Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ инструмСнты

3.1 Binutils

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² инструмСнт Binutils:

3.2 GCC

ΠŸΠ°ΠΊΠ΅Ρ‚ компиляторов GNU ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ C, C ++, Java, Ada, Fortran, Objective-C ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки.

3.3 GLibc

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ рСсурсы встроСнной срСды Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹, ΠΏΠΎΠΌΠΈΠΌΠΎ glibc, Π½Π° Π²Ρ‹Π±ΠΎΡ€ Π΅ΡΡ‚ΡŒ uClibc ΠΈ eglibc. ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² этих Π΄Π²ΡƒΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ…:

3.4 GDB

GDB ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

Π“Π»Π°Π²Π° 4 Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ кросс-компиляции

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ кросс-компиляции, Π³Π΄Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ кросс-компиляции, которая Π½Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ для встроСнных систСм?

Π•ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ основных способа получСния

4.1 Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ кросс-компиляции

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ кросс-компиляции, скомпилированныС Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ЦП. Нам просто Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ, ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

АдрСс Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠ±Ρ‰Π΅ΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ кросс-компиляции:

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, прСдоставляСмыС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ исправлСния, поэтому этот ΠΌΠ΅Ρ‚ΠΎΠ΄ часто являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ источником инструмСнтов.

4.2 Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ инструмСнты для настройки Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ кросс-компиляции

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ производствСнныС инструмСнты, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ созданиС Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ кросс-компиляции. Нам Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ инструмСнты доступны, Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ подходящий инструмСнт ΠΈ ΠΏΠΎΠ½ΡΡ‚ΡŒ этапы Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

БущСствуСт мноТСство инструмСнтов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ свои прСимущСства ΠΈ нСдостатки. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, поэтому я Π½Π΅ Π±ΡƒΠ΄Ρƒ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² подробности.

4.3 ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ кросс-компиляции с нуля

Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ слоТный ΠΈ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΉ процСсс. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ​​цСпочку кросс-компиляции, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ встроСнной компиляции. По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΡƒΠ΄Π° ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² случаС возникновСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, это Ρ‚Π°ΠΊΠΆΠ΅ мСсто, Π³Π΄Π΅ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‚ наибольшСС Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.Если Π²Ρ‹ Π½Π΅ соотвСтствуСтС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ ΠΈΠ»ΠΈ ΡˆΠ°Π³Ρƒ, Ρƒ вас ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Ρ€Π°Π½ΡŒΡˆΠ΅ Π½Π΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΈ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ часто Π½Π΅ связаны Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с этим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΈΠ»ΠΈ шагом.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ссли ΠΎΠ½ собран, ΠΎΠ½, бСзусловно, Π±ΡƒΠ΄Π΅Ρ‚ самым ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ. По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, процСсс компиляции ΠΈ зависимости ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ясны. Π”Π΅Ρ‚Π°Π»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΈΠ»ΠΈ стандарт, Π½ΠΎ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, скСлСт Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ понятным.

Для ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ процСсса ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°, поТалуйста, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΡΡ‚Π°Ρ‚ΡŒΡΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ шаги:
ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС кросс-компиляции 2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ кросс-компиляции ΠΈΠ· нуля

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ кросс-компиляции, я написал сцСнарий, сгСнСрированный ΠΎΠ΄Π½ΠΈΠΌ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ ΠΌΡ‹ΡˆΠΈ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ исходного ΠΊΠΎΠ΄Π° ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ). Если Π²Π°ΠΌ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ этот сцСнарий, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ ваш процСсс согласованным ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ это прСпятствиС:
ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС кросс-компиляции 3 Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ скрипт для автоматичСской Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ кросс-компиляции

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠšΡ€ΠΎΡΡ-компиляция Π² docker. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ ΠΈ Π½Π΅Ρ‚?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс-компиляция? КакиС Π΅ΡΡ‚ΡŒ инструмСнты для сборки Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² для Windows Π² Linux? Как Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для всСго этого? Π’ΠΎΡ‚ лишь нСбольшая Ρ‡Π°ΡΡ‚ΡŒ вопросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π½ΠΈΠΆΠ΅.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

ΠšΡ€ΠΎΡΡ-компиляция позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ исполняСмый ΠΊΠΎΠ΄ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ Ρ‚ΠΎΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ запускаСтся этот процСсс.

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ рассмотрим кросс-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Windows Π² Linux.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ кросс-компилятора ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Mingw-w64. По сути ΠΎΠ½ прСдоствляСт лишь инструмСнт для сборки прилоТСния, Π½ΠΎ, Ссли Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ сторонниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ STL, придСтся ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΡ… ΠΈ зависимости. Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это описано Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π£ΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ настройку сборки позволяСт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ mxe, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ инструмСнты, Π½ΠΎ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π‘ ΠΈΡ… списком ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС. ΠŸΡ€ΠΈ установкС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ зависимостСй, Ρ‚.Π΅. Π±ΡƒΠ΄Π΅Ρ‚ установлСн Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² ΠΏΡ€Π΅Π΄-настроСнной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для статичСской сборки 64-Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ сущСствСнно ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ сборку.

Π‘Ρ€Π΅Π΄Π° mxe разворачиваСтся Π² локальной ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Для этого достаточно ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ зависимости Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π’ ΠΊΠΎΡ€Π½Π΅ рСпозитория находится Makefile, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ выполняСт установку Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π² цСлях Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, добавляСт инструмСнты для сборки ΠΈ Ρ‚.Π΄.

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ срСда сборки локализуСтся Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… своСй ΠΏΠ°ΠΏΠΊΠΈ, это позволяСт Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ»ΡŒΠ½ΡƒΡŽ срСду ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΈΡ€ΡƒΠΉ это

Допустим, Ρ‡Ρ‚ΠΎ сборка Ρ€Π΅Π»ΠΈΠ·Π° для Windows Ρƒ нас настроСна Π½Π° локальной машинС. Π Π΅Π»ΠΈΠ·Ρ‹ выходят довольно часто, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вСрсиях Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π°, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ. Π’ ΠΎΠ΄ΠΈΠ½ прСкрасный дСнь Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΈΠΊ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡΠΊΠΈΠ½ΡƒΡ‚ΡŒ сборку Ρ€Π΅Π»ΠΈΠ·Π° Π½Π° Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°. Как Π΅ΠΌΡƒ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свою срСду сборки? КакиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½ΡƒΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ ΠΈΠ· рСпозитория mxe, Π° для ΠΊΠ°ΠΊΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ сборку ΠΈΠ· исходников?

На этот случай ΠΌΠΎΠΆΠ½ΠΎ завСсти bash-скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ всю срСду Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅. И послС ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ этот скрипт Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии. Но, ΠΊΠ°ΠΊ ΠΈ докумСнтация ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, Π² ΠΎΠ΄ΠΈΠ½ критичСски Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΡ‚Π°Ρ€Π΅Ρ‚ΡŒ.

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ срСду для сборки Π²Π½ΡƒΡ‚Ρ€ΠΈ docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π‘Π°ΠΌ docker-Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ самодостаточный Π½Π°Π±ΠΎΡ€ инструкций ΠΏΠΎ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ срСды, Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ захламлСния домашнСй систСмы лишними Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ.

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ всС вмСстС

Для дСмонстрации возьмСм простой Qt-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ β€” SimpleQtProject. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ собираСтся ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ qmake, ΠΈ состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ СдинствСнной Ρ„ΠΎΡ€ΠΌΡ‹. Π‘Π΄Π΅Π»Π°Π½ΠΎ это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, для простоты. Π’Π°ΠΊ ΠΆΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ docker Π»Π΅ΠΆΠΈΡ‚ Ρ„Π°ΠΉΠ» для сборки ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Рассмотрим docker-Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. По сути ΠΎΠ½ состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… основных частСй:

НиТС рассмотрСны лишь основныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°, для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ознакомлСния рСкомСндуСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ.

ΠŸΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ нСпосрСдствСнно ΠΊ установкС mxe.
ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:

На ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания ΡΡ‚Π°Ρ‚ΡŒΠΈ послСдним Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ Π±Ρ‹Π» build-2019-06-02. Π—Π΄Π΅ΡΡŒ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Π΅Ρ‚ΠΊΠ° мастСр ΠΏΠΎ простой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅: Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ сборки. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² мастСр сборка ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒΡΡ.

Π”Π°Π»Π΅Π΅ настраиваСм систСму сборки:

Данная ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ инструмСнты (экзСмпляры cmake ΠΈ Mingw-w64 ΠΈ ΠΏΡ€.) для статичСской сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎΠ΄ 64-Π±ΠΈΡ‚Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, Π° послС собСрСт с ΠΈΡ… ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Qt.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² PATH ΠΏΡƒΡ‚ΡŒ ΠΊ исполняСмым Ρ„Π°ΠΉΠ»Π°ΠΌ mxe:

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ срСда сборки настроСна, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ нСпосрСдствСнно ΠΊ послСднСму ΠΏΡƒΠ½ΠΊΡ‚Ρƒ:

Π—Π΄Π΅ΡΡŒ слСдуСт ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ нСсколько ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ запускС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π² ΠΏΠ°ΠΏΠΊΡƒ /app/src/ Π±ΡƒΠ΄Π΅Ρ‚ смонтирована ΠΏΠ°ΠΏΠΊΠ° с исходниками, содСрТащая *.pro Ρ„Π°ΠΉΠ», Π° Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /app/res/ смонтировано мСсто, ΠΊΡƒΠ΄Π° слСдуСт ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ сборки.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для создания docker-image, Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π² ΠΏΠ°ΠΏΠΊΠ΅ docker рассматриваСмого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

Π‘Π±ΠΎΡ€ΠΊΠ° ΠΆΠ΅ запускаСтся Ρ‚Π°ΠΌ ΠΆΠ΅:

ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ result Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ docker для копирования Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

ΠšΠ°ΡΡ‚ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΡ сборки

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ mxe прСдоставляСт MinGW вСрсии 5.5.0 (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ это справСдливо для сборки build-2019-06-02).

Если Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ Π‘++ 17, Ρ‚ΠΎ такая вСрсия компилятора Π½Π΅ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, срСда сборки прСдоставляСт Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Π΅ вСрсии Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ нашСй Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ сборки Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ использованию ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π°:

Данная ΠΊΠΎΠΌΠ°Π½Π΄Π° создаст ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ для статичСской сборки 64-Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с использованиСм компилятора сСдьмой вСрсии (7.4.0). Если Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ ΡƒΠΆΠ΅ сущСствуСт, Ρ‚ΠΎ ΠΎΠ½ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π‘ΠΎ списком всСх доступных ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π½Π° страницС.

Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ mxe/src содСрТатся *.mk Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ сборки Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. ΠŸΡ€ΠΈ нСобходимости ΠΌΠΎΠΆΠ½ΠΎ внСсти Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π² ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ свой собствСнный. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ„Π°ΠΉΠ»ΠΎΠ² описана Π²ΠΎΡ‚ Ρ‚ΡƒΡ‚ β€” https://github.com/mxe/mxe/wiki/Add-a-New-Package:-Full-Version.

Для копирования pзависимостСй ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ mxe прСдоставляСт ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ copydlldeps.sh. Но это Π½Π΅ СдинствСнный ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ инструмСнт, с ΠΈΡ… ΠΎΠ»Π½Ρ‹ΠΌ списокм ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π½Π° страницС.

CMake ΠΈ статичСская Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ° Qt

Π’Π°ΠΊ слоТилось, Ρ‡Ρ‚ΠΎ Π² своСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ я использовал Qt ΠΈ систСму сборки CMake. Когда Π±Ρ‹Π»ΠΎ принято Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ сборкС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для Windows, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ выглядСло ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π±ΠΈΠ½Π°Ρ€ΡŒ, Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ зависимостСй.

Разбирая Ρ†Π΅Π»ΡƒΡŽ Π³ΠΎΡ€Ρƒ ошибок Π»ΠΈΠ½ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠ°, ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ такая сборка ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈΠ³Π΄Π΅. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ qmake ΠΏΡ€ΠΈ использовании статичСской Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ *.cpp-Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находятся инструкции ΠΏΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°:

Π’Π°ΠΊ ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ„Π»Π°Π³ΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для этапа Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ Π² Makefile.

МоТно ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΡ‚ с Ρ‚Π°ΠΊΠΎΠΉ конструкциСй Π² CMakeLists.txt:

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², я ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ динамичСски Π»ΠΈΠ½ΠΊΠΎΠ²Π°Ρ‚ΡŒ (ΠΏΠΎ возмоТности) всС внСшниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вмСстС с исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ Π΅Ρ‰Π΅ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ dll с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ copydlldeps.sh. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Qt ΠΏΠΎΠ΄ Windows описано Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ

Π’Ρ‹ΡˆΠ΅ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π·Π° нСсколько простых шагов ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ срСду для кросс-компиляции ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Но, ΠΊ соТалСнию, Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… условиях всС Π½Π΅ Ρ‚Π°ΠΊ Ρ€Π°Π΄ΡƒΠΆΠ½ΠΎ.

Π₯ΠΎΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ mxe прСдоставляСт Π²Π½ΡƒΡˆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ список Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π½ΠΎ всС Ρ€Π°Π²Π½ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Π½Π½ΠΎ Π’Π°ΠΌ, ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ слишком Π½ΠΎΠ²Ρ‹Π΅ вСрсии. Π”Π°, Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ самому ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠ»ΠΈ, Π½Π° Ρ…ΡƒΠ΄ΠΎΠΉ ΠΊΠΎΠ½Π΅Ρ†, ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠ· исходников. Но Π½Π΅ всС ΠΌΠΎΠΆΠ½ΠΎ ΡΠ±ΠΈΠ»Π΄ΠΈΡ‚ΡŒ кросс-компилятором, Ρ‚Π°ΠΊ ΠΌΠ½Π΅ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ cpprestsdk, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ΅Π½ установлСнный vcpkg.

Π­Ρ‚ΠΎ Π΄Π΅Π»ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ кросс-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΈΠ»ΠΈ Π½Π΅Ρ‚. МнС это принСсло Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΏΡ€ΠΎΡ„ΠΈΡ‚. Π― настроил сборку ΠΏΠΎΠ΄ нСсколько дистрибутивов Linux ΠΈ Windows Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… для своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° SecureDialogues, Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΎΠ΄ΠΈΠ½ make-Ρ„Π°ΠΉΠ» для запуска процСсса ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π”Π°Π»Π΅Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ make ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… ОБ Π² локальной ΠΏΠ°ΠΏΠΊΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠšΡ€ΠΎΡΡΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΏΠΎΠ΄ ARM

Достаточно Π΄Π°Π²Π½ΠΎ Ρ…ΠΎΡ‚Π΅Π» ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ сабТ, Π½ΠΎ всё Π±Ρ‹Π»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π΅Π»Π°. И Π²ΠΎΡ‚ настала ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ кросскомпиляции.

Π’ Π΄Π°Π½Π½ΠΎΠΌ постС Π±ΡƒΠ΄ΡƒΡ‚ описаны:

Вводная

Одно ΠΈΠ· Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ Π² соврСмСнном IT это IoT. РазвиваСтся это Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ достаточно быстро, всё врСмя выходят всякиС ΠΊΡ€ΡƒΡ‚Ρ‹Π΅ ΡˆΡ‚ΡƒΠΊΠΈ (Ρ‚ΠΈΠΏΠ° кроссовок со встроСнным Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ΠΎΠΌ ΠΈΠ»ΠΈ кроссовки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΊΡƒΠ΄Π° ΠΈΠ΄Ρ‚ΠΈ (ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для слСпых людСй)). Основная масса этих устройств ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΈΠΏΠ° Β«Π±Π»ΡŽΡ‚ΡƒΠ· Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΠΈΒ», Π½ΠΎ ΠΎΡΡ‚Π°Π²ΡˆΠ°ΡΡΡ Ρ‡Π°ΡΡ‚ΡŒ являСт собой слоТныС процСссорныС систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ этим ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ΠΌ всяких ΡƒΠΌΠ½Ρ‹Ρ… ΡˆΡ‚ΡƒΡ‡Π΅ΠΊ. Π­Ρ‚ΠΈ слоТныС систСмы, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΠ΄Π½ΠΎΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Raspberry Pi, Odroid, Orange Pi ΠΈ Ρ‚.ΠΏ. На Π½ΠΈΡ… запускаСтся Linux ΠΈ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ софт. Π’ основном, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ скриптовыС языки ΠΈ Java. Но Π±Ρ‹Π²Π°ΡŽΡ‚ прилоТСния, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΈ здСсь, СстСствСнно, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ C ΠΈ C++. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ спСцифичноС Π² ядро ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ быстрСС, Π²Ρ‹ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π‘ΠŸΠ€. Π’ΠΎΡ‚ Ρ‚ΡƒΡ‚-Ρ‚ΠΎ ΠΈ Π½ΡƒΠΆΠ½Π° кросскомпиляция.

Если ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ большой, Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ прямо Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅. А Ссли ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ достаточно Π²Π΅Π»ΠΈΠΊ, Ρ‚ΠΎ компиляция Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π° ΠΈΠ·-Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ·Π΄Π΅Ρ€ΠΆΠ΅ΠΊ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Boost Π½Π° Raspberry Pi. Π”ΡƒΠΌΠ°ΡŽ, ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ сборки Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π° Ссли Π΅Ρ‰Ρ‘ ΠΈ ошибки ΠΊΠ°ΠΊΠΈΠ΅ всплывут, Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ ΠΎΡ… ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π½Π° хостС. Π’ ΠΌΠΎΡ‘ΠΌ случаС, это i5 с 4Π“Π‘ ΠžΠ—Π£, Fedora 24.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

Для кросскомпиляции ΠΏΠΎΠ΄ ARM Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ toolchain ΠΈ эмулятор ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π»ΠΈΠ±ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ цСлСвая ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°.

Π’.ΠΊ. мСня интСрСсуСт компиляция для ARM, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ toolchain.

Toolchain’Ρ‹ дСлятся Π½Π° нСсколько Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈΠΏΠ»Π΅Ρ‚ΠΎΠ². Π’Ρ€ΠΈΠΏΠ»Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ состоит ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… частСй: Ρ†Π΅Π»Π΅Π²ΠΎΠΉ процСссор, vendor ΠΈ OS, vendor Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ опускаСтся.

Π‘ΠΏΠ΅Ρ€Π²Π° я пытался ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ toolchain’Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅ΠΆΠ°Ρ‚ Π² Ρ€Π΅ΠΏΠ°Ρ… Fedora 24. Но Π±Ρ‹Π» нСприятно ΡƒΠ΄ΠΈΠ²Π»Ρ‘Π½ этим:

Поискав, наткнулся Π½Π° toolchain ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Linaro. И ΠΎΠ½ мСня Π²ΠΏΠΎΠ»Π½Π΅ устроил.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ инструмСнт- это QEMU. Π― Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Ρ‚.ΠΊ. ΠΌΠΎΠΉ Odroid-C1+ ΠΏΠ°Π» ΡΠΌΠ΅Ρ€Ρ‚ΡŒΡŽ Ρ…Ρ€Π°Π±Ρ€Ρ‹Ρ… (нагнулся ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ SD ΠΊΠ°Ρ€Ρ‚Ρ‹). Но я Ρ‚Π°ΠΊΠΈ успСл с Π½ΠΈΠΌ Ρ‡ΡƒΡ‚ΠΎΠΊ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ€Π°Π΄ΠΎΠ²Π°Ρ‚ΡŒ.

ЭлСмСнтарная тСхнология кросскомпиляции

БобствСнно, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Π² этом Π½Π΅Ρ‚. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ toolchain Π² Ρ€ΠΎΠ»ΠΈ компилятора. А стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ вмСстС с toolchain’ΠΎΠΌ.

КакиС ΠΊΠ»ΡŽΡ‡ΠΈ Ρƒ toolchain’Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° сайтС gnu, Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

Для Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠΌΡƒΠ»ΡΡ†ΠΈΡŽ с ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ. Π― Ρ€Π΅ΡˆΠΈΠ» ΡΡŠΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Cortex-A9.

ПослС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ наткнулся Π½Π° этот how2, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ оказался Π²ΠΏΠΎΠ»Π½Π΅ вмСняСмым, Π½Π° ΠΌΠΎΠΉ взгляд.

Ну спСрва, само собою, Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΈΠΌΠ΅Ρ‚ΡŒ QEMU. Установил я Π΅Π³ΠΎ ΠΈΠ· стандартных Ρ€Π΅ΠΏΠΎΠ² Fedor’Ρ‹.

Π”Π°Π»Π΅Π΅ создаём ΠΎΠ±Ρ€Π°Π· Тёсткого диска, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ установлСн Debian.

По этой ссылкС скачал vmlinuz ΠΈ initrd ΠΈ запустил ΠΈΡ… Π² эмуляции.

Π”Π°Π»Π΅Π΅ просто устанавливаСм Debian Π½Π° наш ΠΎΠ±Ρ€Π°Π· Тёсткого диска (Ρƒ мСня ΡƒΡˆΠ»ΠΎ

ПослС установки Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π½ΡƒΡ‚ΡŒ ΠΈΠ· ΠΎΠ±Ρ€Π°Π·Π° Тёсткого диска vmlinuz ΠΈ initrd. Π”Π΅Π»Π°Π» я это ΠΏΠΎ описанию ΠΎΡ‚ΡΡŽΠ΄Π°.

Π‘ΠΏΠ΅Ρ€Π²Π° ΡƒΠ·Π½Π°Ρ‘ΠΌ смСщСниС, Π³Π΄Π΅ располоТСн Ρ€Π°Π·Π΄Π΅Π» с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ Π½Π°ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎ этому ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΈΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π½Π°ΠΌ Ρ€Π°Π·Π΄Π΅Π».

ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ Ρ„Π°ΠΉΠ»Ρ‹ vmlinuz ΠΈ initrd ΠΈ Ρ€Π°Π·ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Тёсткий диск.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠΌΡƒΠ»ΡΡ†ΠΈΡŽ.

И Π²ΠΎΡ‚ Π·Π°Π²Π΅Ρ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅:

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция

Π’Π΅ΠΏΠ΅Ρ€ΡŒ с хоста ΠΏΠΎ SSH ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ†Π΅ΠΏΠΈΡ‚ΡŒΡΡ ΠΊ симуляции.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΊΡƒ. По Makefile’Ρƒ ясно, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€. ΠŸΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΠΉ.

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ Π½Π° хостС исполняСмый Ρ„Π°ΠΉΠ».

ΠžΡ‚ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ -static, Ссли Π½Π΅Ρ‚ особого ТСлания ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ плотским ΡƒΡ‚Π΅Ρ…Π°ΠΌ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅.

ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ исполняСмый Ρ„Π°ΠΉΠ» Π½Π° Ρ‚Π°Ρ€Π³Π΅Ρ‚ ΠΈ провСряСм.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кросс компиляция

БобствСнно, Π²ΠΎΡ‚ такая ΠΎΠ½Π°, эта кросскомпиляция.

UPD: ΠŸΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ toolchain’Π°ΠΌ ΠΏΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡŽ grossws.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *