Айқас компилятор - Cross compiler

A крест-компилятор Бұл құрастырушы жасауға қабілетті орындалатын а коды платформа компилятор жұмыс істейтінінен басқасы. Мысалы, a-да жұмыс жасайтын компилятор Windows 7 ДК бірақ жұмыс істейтін код жасайды Android смартфон кросс-құрастырушы болып табылады.

Кросс-компилятор бір даму хостынан бірнеше платформалар үшін кодты компиляциялау үшін қажет. Мақсатты платформада тікелей компиляция мүмкін емес болуы мүмкін, мысалы микроконтроллер туралы ендірілген жүйе, өйткені бұл жүйелерде амалдық жүйе жоқ. Жылы паравиртуализация, бір компьютер бірнеше жұмыс істейді операциялық жүйелер және кросс-компилятор олардың әрқайсысы үшін бір негізгі көзден орындалатын құра алады.

Айқас компиляторлар ерекшеленеді қайнар көзден компиляторлар. Айқас компилятор - арналған платформалық бағдарламалық жасақтама машиналық кодты әзірлеу, ал дереккөзден компилятор мәтіндік кодта бір бағдарламалау тілінен екіншісіне аударады. Екеуі де бағдарламалау құралдары.

Пайдаланыңыз

Кросс-компиляторды іргелі қолдану құрылыс ортасы мен мақсатты ортаны бөлу болып табылады. Бұл бірнеше жағдайда пайдалы:

  • Кіріктірілген компьютерлер бұл жерде құрылғы шектеулі ресурстарға ие. Мысалы, микротолқынды пештің сенсорлық тақтасы мен есік сенсорын оқитын, цифрлық дисплей мен динамиктің шығуын қамтамасыз ететін және тамақ пісіруге арналған жабдықты басқаратын өте кішкентай компьютер болады. Бұл компьютердің компиляторды, файлдық жүйені немесе даму ортасын басқаруға күші жетпейді. Түзету мен тестілеу ендірілген жүйеге қарағанда көбірек ресурстарды қажет етуі мүмкін болғандықтан, кросс-компиляция жергілікті компиляцияға қарағанда аз қатысуы және қателіктерге аз ұшырауы мүмкін.
  • Бірнеше машиналарға жинақтау. Мысалы, компания бірнеше түрлі амалдық жүйенің нұсқаларын немесе бірнеше түрлі амалдық жүйелерді қолдағысы келуі мүмкін. Кросс-компиляторды қолдану арқылы осы мақсаттардың әрқайсысы үшін компиляциялау үшін біртұтас құрастыру ортасын орнатуға болады.
  • Бойынша құрастыру сервер фермасы. Бірнеше машиналарға арналған компиляцияға ұқсас, көптеген компиляция операцияларын қамтитын күрделі құрастыруды оның базалық аппаратурасына немесе ол жұмыс істеп тұрған амалдық жүйенің нұсқасына қарамастан, кез келген тегін машинада орындауға болады.
  • Жүктеу жаңа платформаға. Жаңа платформаға немесе болашақ платформаның эмуляторына арналған бағдарламалық жасақтама жасау кезінде операциялық жүйе және жергілікті компилятор сияқты қажетті құралдарды құрастыру үшін кросс-компилятор қолданылады.
  • Үшін жергілікті кодты құрастыру эмуляторлар Commodore 64 немесе Apple II сияқты ескірген платформалар үшін қазіргі платформада жұмыс жасайтын кросс компиляторларды пайдаланатын энтузиастардың (мысалы, Aztec C-дің MS-DOS) 6502 астында жұмыс жасайтын кросс компиляторлар Windows XP ).

Қолдану виртуалды машиналар (мысалы, Java сияқты) JVM ) кросс-компиляторлар жасалынған кейбір себептерді шешеді. Виртуалды машиналар парадигмасы бірдей компилятордың шығуын бірнеше мақсатты жүйелерде қолдануға мүмкіндік береді, дегенмен бұл әрқашан идеалды бола бермейді, өйткені виртуалды машиналар көбінесе баяу болады және жинақталған бағдарламаны тек сол виртуалды машинамен жұмыс істейтін компьютерлерде қолдана алады.

Әдетте аппараттық сәулет ерекшеленеді (мысалы, арналған бағдарламаны құрастыру MIPS архитектурасы бойынша x86 компьютерлік), бірақ кросс-компиляция тек сол кезде қолданылады операциялық жүйе қоршаған ортаны құрайтын кездегідей ерекшеленеді FreeBSD бағдарламасы астында Linux, немесе тек бағдарламалық жасақтамадағыдай жүйелік кітапхана uClibc үстінде glibc хост.

Канадалық крест

The Канадалық крест бұл басқа машиналарға арналған кресттік компиляторларды құрастырудың әдістемесі. Үш A, B және C машиналары берілгенде, біреуі A машинасын қолданады (мысалы, жүгіру) Windows XP бойынша IA-32 процессор) В машинасында жұмыс жасайтын кросс компилятор құру үшін (мысалы, жұмыс істеп тұр) Mac OS X бойынша x86-64 процессор) С машинасы үшін орындалатын файлдарды жасауға арналған (мысалы, іске қосу) Android бойынша ҚОЛ процессор). Канадалық крестті GCC-пен қолданған кезде төрт компилятор қатысуы мүмкін

  • The A машинасына арналған жеке компилятор (1) (мысалы, компилятор Microsoft Visual Studio ) құру үшін қолданылады gcc жергілікті компиляторы A машинасына арналған (2).
  • The А машинасы үшін gcc жергілікті компиляторы (2) құру үшін қолданылады gcc крестті компилятор А машинасынан В машинасына (3)
  • The gcc крестті компилятор А машинасынан В машинасына (3) құру үшін қолданылады gcc крестті компилятор B машинасынан C машинасына (4)

Канадалық крест мысалы, схема

Ақырғы нәтижелік кросс компилятор (4) құрастыру машинасында А жұмыс істей алмайды; оның орнына В машинасында қосымшаны орындалатын кодқа жинақтау үшін жұмыс істейтін болады, содан кейін С машинасына көшіріліп, С машинасында орындалады.

Мысалы, NetBSD қамтамасыз етеді POSIX Unix қабығы сценарий аталды салу алдымен өздігінен салады құралдар тізбегі хосттың құрастырушысымен; бұл, өз кезегінде, бүкіл жүйені құру үшін қолданылатын кросс-компиляторды құру үшін қолданылады.

Термин Канадалық крест пайда болды, өйткені сол кезде бұл мәселелер талқыланып жатқан кезде Канадада үш ұлттық саяси партия болған.[1]

Ерте кросс компиляторларының хронологиясы

  • 1979 – ALGOL 68C құрылған ZCODE; бұл компиляторды және басқа ALGOL 68 қосымшаларын баламалы платформаларға көшіруге көмектесті. ALGOL 68C компиляторын құрастыру үшін шамамен 120 кБ жады қажет. Бірге Z80 оның 64 кБ жады компиляторды шынымен компиляциялау үшін тым аз. Сондықтан Z80 үшін компиляторды үлкенінен кросс құрастыру керек болды CAP мүмкіндігі бар компьютер немесе ан IBM System / 370 мейнфрейм.

GCC және кросс-компиляция

GCC, а ақысыз бағдарламалық жасақтама компиляторлар коллекциясы, кросс-компиляция үшін орнатылуы мүмкін. Ол көптеген платформалар мен тілдерді қолдайды.

GCC көшірілген көшірмені талап етеді бинтильдер әрбір мақсатты платформа үшін қол жетімді. Әсіресе маңызды GNU ассемблері. Сондықтан бинутилдерді алдымен коммутатормен дұрыс құрастыру керек --target = кейбір мақсат жіберілді сценарийді конфигурациялау. GCC де болуы керек конфигурацияланған сол сияқты --мақсат опция. Содан кейін GCC-ді әдеттегідей іске қосуға болады, егер бұл құралдар, ол бинтильдер жасайды, қол жетімді жол, келесі әрекеттерді қолдану арқылы жасалуы мүмкін (bash-пен бірге UNIX тәрізді операциялық жүйелерде):

PATH = / path / to / binutils / bin: $ {PATH} құрайды

GCC-ді кросс құрастыру үшін оның бөлігі қажет мақсатты платформас C стандартты кітапхана сайтында қол жетімді хост платформасы. Бағдарламалаушы C кітапханасын толығымен жинауды таңдай алады, бірақ бұл таңдау сенімсіз болуы мүмкін. Балама нұсқасы - пайдалану newlib, бұл аз C кітапханасы құрамында компиляцияға қажетті ең маңызды компоненттер ғана бар C бастапқы код.

The GNU автоматты құралдары пакеттер (яғни автоконф, автомобиль жасау, және libtool ) а ұғымын қолдану платформа құру, а хост платформасыжәне а мақсатты платформа. The платформа құру - бұл компилятор нақты құрастырылған жер. Көп жағдайда құрастыру анықталмаған күйде қалуы керек (ол хосттан әдепкі болады). The хост платформасы әрқашан компилятордан шығатын артефактілер шығарылым басқа компилятор бола ма, жоқ па орындалатын болады. The мақсатты платформа кросс-компиляторларды компиляциялау кезінде қолданылады, ол буманың өзі объектілік кодтың қандай түрін шығаратынын білдіреді; әйтпесе мақсатты платформа параметр маңызды емес.[2] Мысалы, а-да жұмыс жасайтын бейне ойынды компиляциялауды қарастырайық Dreamcast. Ойын құрастырылатын машина - бұл платформа құру ал Dreamcast - бұл хост платформасы. Атаулар хост және мақсат сияқты қолданылып, ауыстырылған компиляторға қатысты ұлы және шөбере.[3]

Linux ендірушілерінің кеңінен қолданатын тағы бір әдісі GCC компиляторларын мамандандырылған құм жәшіктерімен үйлестіруді қамтиды Скретчбокс, scratchbox2, немесе PRoot. Бұл құралдар «хроутталған «бағдарламашы қосымша құралдарды орнатпай-ақ қажетті құралдарды, libc пен кітапханаларды құра алатын құм жәшігі. Сондай-ақ, жұмыс уақыты» алдау «үшін мүмкіндіктер қарастырылған, ол шынымен жоспарланған мақсатты CPU-да жұмыс істейді (мысалы) бұл ARM архитектурасы); бұл конфигурация сценарийлерінің және сол сияқтылардың қатесіз іске қосылуына мүмкіндік береді.Скратчбокс «хрондалмаған» әдістермен салыстырғанда баяуырақ жұмыс істейді және хостта орналасқан көптеген құралдар жұмыс істеуі үшін Scratchbox ішіне жылжытылуы керек.

Manx Aztec C крест-компиляторлары

Manx бағдарламалық қамтамасыз ету жүйелері, of Шрусбери, Нью Джерси, өндірілген C компиляторлары 1980 жылдардан бастап, оған қоса түрлі платформаларға арналған кәсіби әзірлеушілерге бағытталған ДК және Mac.

Manx's Ацтек С бағдарламалау тілі түрлі платформалар үшін қол жетімді болды, соның ішінде MS-DOS, Apple II, DOS 3.3 және ProDOS, Commodore 64, Macintosh 68XXX[4] және Амига.

1980-ші жылдардан бастап 1990-шы жылдарға дейін Manx Software Systems жойылғанға дейін Aztec C-дің MS-DOS нұсқасы[5] жергілікті режимнің компиляторы ретінде де, басқа процессорлары бар басқа платформалар үшін кросс-компилятор ретінде де, соның ішінде Commodore 64 де ұсынылды[6] және Apple II.[7] Aztec C үшін MS-DOS негізделген кросс-компиляторларды қоса Интернет таратылымдары әлі де бар. Олар бүгінгі күнге дейін қолданыста.

Manx's Aztec C86, олардың табиғи режимі 8086 MS-DOS компиляторы да кросс-компилятор болды. Бұл олардың Aztec C65 сияқты басқа процессорға код жинамағанымен 6502 Commodore 64 және Apple II кросс-компиляторлары, ол 16 биттік 8086 процессорлар отбасы үшін бұрынғы операциялық жүйелер үшін екілік орындалатын файлдар құрды.

IBM ДК алғаш рет енгізілгенде, амалдық жүйелерді таңдау мүмкіндігі бар, CP / M-86 және PC DOS олардың екеуі. Aztec C86-да екеуіне де код жасауға арналған сілтеме кітапханалары ұсынылды IBM PC операциялық жүйелер. 1980 жылдардың ішінде Aztec C86 (3.xx, 4.xx және 5.xx) кейінгі нұсқалары үшін қолдау MS-DOS «өтпелі» 1 және 2 нұсқалары[8] және MS-DOS 3-нұсқасының «базалық» нұсқасынан гөрі сенімділігі төмен және кейінірек Aztec C86 жойылғанға дейін бағытталған.

Соңында, Aztec C86 C тілін дамытушыларға өндіріс қабілетін берді ROM қолдана алады «HEX» а көмегімен жіберуге болатын код ROM оттығы тікелей 8086 негізделген процессорға. Паравиртуализация қазіргі кезде жиі болуы мүмкін, бірақ төмен деңгейлі ROM кодын жасау тәжірибесі жан басына шаққанда сол жылдары жиі кездеседі құрылғы драйвері әзірлеуді жеке қосымшаларға арналған қолданбалы бағдарламашылар жасайтын, ал жаңа құрылғылар а саяжай өнеркәсібі. Қолданбалы бағдарламашылар өндірушілердің қолдауынсыз аппараттық құралдармен тікелей интерфейс жасауы сирек емес еді. Бұл тәжірибе ұқсас болды Кірістірілген жүйелерді дамыту бүгін.

Томас Фенвик пен Джеймс Гуднов II - Aztec-C-дің екі негізгі жасаушылары. Фенвик кейіннен автор ретінде танымал болды Microsoft Windows CE ядро немесе NK («Жаңа ядро») сол кезде қалай аталған.[9]

Microsoft C крест компиляторлары

Ерте тарихы - 1980 жж

Microsoft C (MSC) тарихы басқаларға қарағанда қысқа[10] 1980 жылдардан бастау алады. Бірінші Microsoft C компиляторларын сол компания жасаған Тор С және MSC 4 шыққанға дейін Майкрософт өздерінің жеке ребрендингімен айналысты, бұл Майкрософт өздері шығарған алғашқы нұсқа болды.[11]

1987 жылы көптеген әзірлеушілер Microsoft C-ге ауыса бастады, ал басқалары Microsoft Windows-тың қазіргі күйіне дейін жалғасады. Сияқты өнімдер Қайшы және кейінірек Кларион бағдарламалардың бір бөлігін Microsoft C көмегімен құрастыруға мүмкіндік беретін тілдік техниканы қолдану арқылы мәліметтер қорының қосымшаларын оңай құруды ұсынды.

Борланд С (Калифорния компаниясы) Microsoft корпорациясы өзінің алғашқы C өнімін шығарғанға дейін бірнеше жыл бұрын сатып алуға болатын.

Борландтан көп бұрын, BSD Unix (Беркли университеті) Си тілінің авторларынан С алған: Керниган және Ritche жұмыс істеген кезде оны кім бірауыздан жазды AT&T (зертханалар). K&R-дің алғашқы қажеттіліктері тек қана 1 деңгейлі синтаксисті ауыстыру үшін талғампаз 2 деңгей синтаксисі ғана емес еді: ол әр платформаны қолдау үшін ең аз мөлшерде asm жазылатын етіп жасалған (C-нің бастапқы дизайны C көмегімен компиляцияны қиып өту мүмкіндігі болды бір платформаға ең аз қолдау коды, олар қажет болды.). Сондай-ақ, кешегі C платформаларға тәуелді емес жерде ASM кодына тікелей қатысты. Бүгінгі C (бұдан әрі - с ++) енді C-ге сәйкес келмейді және астм-кодтың негізі берілген платформада жазылғаннан гөрі өзгеше болуы мүмкін (Linux-де: ол кейде дистрибьютордың таңдауымен кітапхана қоңырауларын ауыстырады және айналып өтеді). Бүгінгі С - бұл 3-ші немесе 4-ші деңгейлі тіл, ол екінші деңгейдегі тіл сияқты ескі тәсілмен қолданылады.

1987

C бағдарламалары бұрыннан жазылған модульдермен байланыстырылған құрастыру тілі. С компиляторларының көпшілігі (тіпті қазіргі компиляторлар) ассемблер тілінен өтуді ұсынады (оны тиімділікті өзгертуге болады, содан кейін жинақталғаннан кейін бағдарламаның қалған бөлігімен байланыстыруға болады).

Aztec-C сияқты компиляторлар барлығын ассемблер тіліне айырықша өту ретінде түрлендірді, содан кейін кодты ерекше өтуде жинады және өте тиімді және кішігірім кодымен ерекшеленді, бірақ 1987 жылға қарай Microsoft C-ге енгізілген оңтайландырғыш өте жақсы болды және тек Бағдарламаның «миссиялық маңызды» бөліктері қайта жазу үшін қарастырылды. Іс жүзінде С тіліндегі бағдарламалау «төменгі деңгей» тілі ретінде қабылданды, бағдарламалау өсудің көп саласына айналды және жобалар кеңейе түсті, бағдарламашылар қолданушы интерфейстері мен мәліметтер базасының интерфейстерін жоғары деңгейлі тілдерде жазды және қажеттілік туды бүгінгі күнге дейін жалғасып келе жатқан тілдерді дамыту үшін пайда болды.

1987 жылға қарай MSC 5.1 шыққаннан кейін Microsoft MS-DOS үшін тіл дамыту ортасын ұсынды. Ассемблер тілінде жазылған 16 биттік екілік нысан коды (MASM ) және Microsoft корпорациясының басқа тілдері, соның ішінде QuickBASIC, Паскаль, және Фортран бір бағдарламаға біріктірілуі мүмкін, бұл процесте олар «Аралас тілдік бағдарламалау» және «Тіларалық қоңырау» деп аталады.[12] Егер НЕГІЗГІ осы микс қолданылды, ішкі бағдарламаны қолдау үшін негізгі бағдарлама BASIC-те болуы керек жұмыс уақыты жүйесі қоқысты жинау үшін қажетті BASIC-ті құрастырған және BASIC-ті имитациялайтын басқа басқарылатын операциялар аудармашы сияқты QBasic MS-DOS жүйесінде.

The шақыру конвенциясы С коды үшін, атап айтқанда, параметрлерді «кері тәртіпте» беру керек еді стек және мәндерді а-ға емес, стекке қайтарыңыз процессор тіркелімі. Барлық тілдерді бірлесіп жұмыс жасау үшін басқа бағдарламалау ережелері болған, бірақ бұл ереже бүкіл тілде дамыған тілдер арқылы дамыды Windows 16 және 32 биттік нұсқалары және арналған бағдарламаларды жасау кезінде OS / 2 және ол әлі күнге дейін сақталып келеді. Ол ретінде белгілі Паскаль шақыру конвенциясы.

Осы уақыт ішінде Microsoft C қолданылған кросс-компиляцияның тағы бір түрі бөлшек сауда қосымшаларында қажет болды қолмен жұмыс жасайтын құрылғылар сияқты Symbol Technologies PDT3100 (қабылдау үшін қолданылған түгендеу сілтеме кітапханасын ұсынған 8088 негізделген штрих-кодты оқу құралы. Қосымша хост-компьютерде құрастырылды, содан кейін қолмен жұмыс жасайтын құрылғыға ауыстырылды (а. Арқылы сериялық кабель ) қай жерде іске қосылды, дәл сол нарық үшін жасалынатынға ұқсас Windows Mobile сияқты компаниялармен Motorola, Symbol сатып алған.

1990 жылдардың басында

1990 жылдардың бойына және MSC 6-дан бастап (олардың біріншісі) ANSI C үйлесімді компилятор) Microsoft өзінің C компиляторларын дамушы Windows нарығына қайта бағыттады, сонымен қатар OS / 2 және дамуында GUI бағдарламалар. Аралас тіл үйлесімділігі MS-DOS жағында MSC 6 арқылы қалды, бірақ API Microsoft Windows 3.0 және 3.1 үшін MSC 6-да жазылған. MSC 6 32-разрядтық жиналыстарға қолдау көрсету және жаңадан пайда болатындарға қолдау көрсету үшін кеңейтілді. Windows үшін жұмыс топтары және Windows NT негіз болатын еді Windows XP. А деп аталатын бағдарламалау практикасы жіңішке жұмыс уақытын байланыстырудың артықшылығын пайдаланған 16 мен 32 биттік бағдарламалар арасында өтуге мүмкіндік беру үшін енгізілді (динамикалық байланыстыру ) орнына статикалық байланыстыру бұл қолайлы болды монолитті 16 биттік MS-DOS қосымшалары. Статикалық байланыстыруды кейбір жергілікті код әзірлеушілер қолдайды, бірақ көбінесе оның дәрежесін бермейді кодты қайта пайдалану сияқты жаңа озық тәжірибелер талап етеді Қабілеттің жетілу моделі (CMM).

MS-DOS қолдауы бұрынғыдай Microsoft бағдарламасының C ++ компиляторы - MSC 7 шығарылымымен қамтамасыз етілді, ол C бағдарламалау тілімен және MS-DOS-пен кері үйлесімді болды және 16 биттік және 32 биттік кодтар шығаруды қолдады.

MSC қай жерде болды Ацтек С86 қалдырды. С компиляторларының нарықтағы үлесі Windows-тың ең жақсы және керемет мүмкіндіктерін пайдаланып, C және C ++ тілдерін бір бумада ұсынған және онжылдықта болған MS-DOS жүйелерін, сондай-ақ кішігірім компанияларды қолдайтын кросс-компиляторларға айналды. Aztec C сияқты шығарылған компиляторлар енді бәсекеге түсе алмады және нарық сияқты нарықтарға бет бұрды ендірілген жүйелер немесе жоғалып кетті.

MS-DOS және 16 биттік кодты қолдау MSC 8.00c дейін жалғасты, ол Microsoft C ++ және Microsoft Application Studio 1.5, алдыңғы қатарда болатын Microsoft Visual Studio бұл Microsoft корпорациясы ұсынатын кросс-даму ортасы.

1990 жылдардың аяғы

MSC 12 Microsoft Visual Studio 6 жүйесімен шығарылды және MS-DOS 16 биттік екілік файлдарға қолдау көрсетпеді, оның орнына 32 биттік консольдық қосымшаларға қолдау көрсетті, бірақ Windows 95 және Windows 98 сияқты кодты құру Windows NT. Сілтеме кітапханалары Microsoft Windows жүйесін басқаратын басқа процессорлар үшін қол жетімді болды; Майкрософт осы күнге дейін жалғастырып келе жатқан тәжірибе.

MSC 13 шығарылды Visual Studio 2003, және MSC 14 шығарылды Visual Studio 2005, екеуі де Windows 95 сияқты ескі жүйелер үшін код жасайды, бірақ бірнеше мақсатты платформалар үшін кодты шығарады, соның ішінде ұялы байланыс нарығы және ARM архитектурасы.

.NET және басқалары

2001 жылы Microsoft компаниясы Жалпы тілдік жұмыс уақыты (CLR), олар үшін өзек болды .NET Framework Visual Studio IDE-де компилятор. Бұл амалдық жүйеде орналасқан қабат API Windows операциялық жүйесін басқаратын платформалар бойынша құрастырылған тілдерді араластыруға мүмкіндік береді.

.NET Framework жұмыс уақыты және CLR процессор мен мақсатты компьютердегі құрылғылар үшін негізгі процедураларға салыстыру қабатын ұсынады. Visual Studio-дағы командалық жолдың компиляторы әр түрлі процессорларға арналған жергілікті кодты құрастырады және оларды негізгі процедураларды құру үшін қолдануға болады.

Сияқты мақсатты платформаларға арналған Microsoft .NET қосымшалары Windows Mobile үстінде ARM архитектурасы әр түрлі процессорлары бар Windows машиналарында кросс-компиляция және Microsoft сонымен бірге эмуляторлар мен қашықтағы орналастыру орталарын ұсынады, олар конфигурацияны өте аз қажет етеді, өткен күндердегі немесе басқа платформалардағы кросс-компиляторлардан айырмашылығы.

Сияқты жұмыс уақытының кітапханалары Моно сияқты кросс-компиляцияланған .NET бағдарламаларының басқа амалдық жүйелермен үйлесімділігін қамтамасыз етеді Linux.

Кітапханалар ұнайды Qt және оның предшественники, соның ішінде XVT Windows нұсқаларын құру үшін Microsoft C-ді қолдана отырып, басқа платформалармен бастапқы код деңгейінің кросс дамуын қамтамасыз етіңіз. Басқа компиляторлар ұнайды МинГВ осы салада танымал болды, өйткені олар Unixes-пен тікелей үйлеседі, олар бағдарламалық жасақтаманың Windows-қа қатысты емес бөлігін құрайды, сол жасаушыларға таныс құрастыру ортасын пайдаланып барлық платформаларды бағыттауға мүмкіндік береді.

Тегін Паскаль

Тегін Паскаль басынан бастап кросс компилятор ретінде дамыған. Орындалатын компилятор (ppcXXX, мұндағы ХХХ мақсатты архитектура) барлық архитектураның барлық ОЖ-леріне орындалатын файлдарды (немесе ішкі байланыстырушы болмаса, жай ғана файлдар, тіпті егер ішкі ассемблер болмаса, тек құрастыру файлдарын) жасауға қабілетті. Мысалы, ppc386 i386-linux, i386-win32, i386-go32v2 (DOS) және барлық басқа ОЖ үшін орындалатын файлдарды шығаруға қабілетті (қараңыз) [13]). Басқа архитектураға компиляция жасау үшін алдымен компилятордың кросс-архитектуралық нұсқасы жасалуы керек. Нәтижесінде орындалатын компилятор өзінің атауында мақсатты архитектураның алдында қосымша «розс» болады. яғни, егер компилятор x64-ке бағытталған болса, онда орындалатын ppcrossx64 болады.

Таңдалған архитектура-ОЖ үшін компиляциялау үшін компилятор қосқышын (fpc компилятор драйвері үшін) -P және -T қолдануға болады. Бұл компилятордың кросс-компиляциясы кезінде де жасалады, бірақ CPU_TARGET және OS_TARGET параметрлері арқылы орнатылады. Мақсатты платформаға арналған GNU ассемблері мен байланыстырушысы қажет, егер Free Pascal-да мақсатты платформаға арналған құралдардың ішкі нұсқасы болмаса.


Қоңырау

Clang - бұл кросс компилятор, құрастыру кезінде сіз Clang-дің қандай архитектураны мақсат ете алатындығын таңдай аласыз.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ «4.9 Канада кресттері». CrossGCC. Архивтелген түпнұсқа 2004 жылғы 9 қазанда. Алынған 2012-08-08. Мұны «Канадалық крест» деп атайды, себебі сол кезде Канадада үш ұлттық партия болған.
  2. ^ https://www.gnu.org/s/libtool/manual/automake/Cross_002dCompilation.html
  3. ^ https://mesonbuild.com/Cross-compilation.html
  4. ^ «Ескірген Macintosh компьютерлері». Архивтелген түпнұсқа 2008-02-26. Алынған 2008-03-10.
  5. ^ Ацтек С
  6. ^ Commodore 64
  7. ^ Apple II
  8. ^ MS-DOS хронологиясы Мұрағатталды 2008-05-01 Wayback Machine
  9. ^ Windows CE ішінде (Фенвикті іздеу)
  10. ^ Microsoft Language Utility нұсқасының тарихы
  11. ^ Компьютерлерге негізделген С-компиляторларының тарихы Мұрағатталды 15 желтоқсан 2007 ж Wayback Machine
  12. ^ Қандай негізгі нұсқалар C, FORTRAN, Pascal, MASM деп атай алады
  13. ^ «Тегін Паскальда қолдау көрсетілетін платформалар тізімі». Платформалар тізімі. Алынған 2010-06-17. i386

Сыртқы сілтемелер