Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

GCC
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=16726
Страница 1 от 6

Автор:  TheWizard [ Нед Авг 25, 2019 8:38 am ]
Заглавие:  GCC

какво точно прави liblto_plugin?
реално мога да го игнорирам със -fno-use-linker-plugin

опитвам се да орежа компилатора в "компактен" размер от няколко гиги до 50 мега - само EXE-тата (по идея на Майкрософт)
крос PC към Linux АРМ ( само за пример Расбери ) - на арма имам sysroot-a и видимо компилира - не съм пробвал с устройство

Автор:  ДедоБоре [ Нед Авг 25, 2019 9:41 am ]
Заглавие:  Re: GCC

LTO (Link Time Optimization) е гъвкав механизъм как да влияеш на тази оптимизация без да прекомпилираш тулчейна.
ако не ползваш този механизъм, остава да важи дефолтния, с който е компилиран. а това силно зависи от мързела, разбирането, таргета, езиците и т.н. на създалия го. т.е. това е механизъм да получиш що-годе очакван резултат (на етапа на оптимизация) от произволно неочакван компилатор (по-скоро линкер).

и докато в плейн С нещата са относително ясни (махане на deadcode и подобни), в С++ и особено Objectiwe-C с всичките новоизмишльотини ('стандарти') около тях нещата не са толкова очевидни и кърпките за напасване на квадратния чеп в кръгла дупка са придобили стихийно-бедствен характер. при наличието на милиони пермутации на тулчейн, таргет, крос-компилация, библиотеки и ОС-ове, това като че ли е единствения вариант нещата все пак да се добутат до работещо бинари.

има цяла екосистема LLVM около тази идея (за LTO), която в някои случаи е минималистична (за плейн С, примерно), но в други става доста дебела.
ако ще правиш 'дистрибуция', която няма да я ползваш само ти, не е добра идея да елиминираш LTO механизъма, защото не се знае кой с каква мотика седне на твоята дистрибуция и ще се почнат едни питания 'защо няма топла вода в бидето, като се чеша по лявото ухо с десния крак'

Автор:  TheWizard [ Нед Авг 25, 2019 10:01 am ]
Заглавие:  Re: GCC

реално няма да го ползвам да прекомпилирам кернели, линукси....етц
а за "прости" user-ware апликации с IoT насоченост
пример GSM Линукс модули - пълния GCC е гиги бла-бла плюс гига sysroot и си е... мамата, а всъщност се ползват няколко сокета...

Като разпампурих Ажур Сферата, М-софт ползват само ЕХЕ-тата от некво GCC + sysroot към самия ARM cortex-A7 <---- който се ползва 90% при IoT орязани Линукси
В близките дни ще пробвам дали работи на девайса... то компилацията като я гледам е нормална - питанката е дали е линкиран правилно

Автор:  ДедоБоре [ Нед Авг 25, 2019 10:41 am ]
Заглавие:  Re: GCC

проблем може да възникне с някое модно и възвишено програмче на C++20, което от своя страна ползва библиотеки на С++17 и С++11
ако я няма LTO оптимизацията, ще се компилира без нея и най-вероятно ще си работи, освен ако не се разчита на нея да закърпи нещо специфично.

мисълта ми е, че този плъгин не е голям и махането му няма да намали гигабайтите до мегабайти. някъде другаде е заровено голямото лакомо куче.
честно да си призная, не разбирам особения ти ентусиазъм да бориш тоя Ажур. не съм и вниквал кой знае колко какво точно бориш :?

просто цялата тема за IoT с гигабайтова тежина ми е чужда и без някой да ми плати 'вредни' нямам намерения да я пипам и с пръчка, камоли да я наближавам на дебъгер разстояние.
аз съм от изчезващия вид, който си пише сам мейк-файловете и дори automake ми идва нанагорно, а cmake направо ми 'вдига кръв', както казваше един виетнамец.

Автор:  TheWizard [ Нед Авг 25, 2019 10:58 am ]
Заглавие:  Re: GCC

130k DLL е не съм го махнал и съм РЕМнал опцията -fno-use-linker-plugin

за Ажура само портнах Ардуино да "дразня" М-Софт :) имат интересна концепция, но все си мисля че бюрократичната им машина ще пропилее и този им проект
ее - понаучих как да орежа GCC - мисълта ми е за GSM модулите с Линукс (то май само Qualcomm има Линукс портове)
та дори и малинката страда от огромните крос компилатори

Автор:  TheWizard [ Нед Авг 25, 2019 11:19 am ]
Заглавие:  Re: GCC

още една питанка: как да сменя defaut зададените от компилатора version-specific libraries PATH
/usr/lib/target/version/

ако не ги намира реве: real-ld.exe: cannot find crtbeginS.o: No such file or directory

просто искам да им сменя "пътя"
например да сочи /usr/lib/mdm/

Автор:  ДедоБоре [ Нед Авг 25, 2019 11:26 am ]
Заглавие:  Re: GCC

понятието 'крос-компилатор' е доста разтегливо.
самия компилатор надали е особено голям. но ако визираш М$ черчевета (съдя по .ехе), това не е само компилатор, а цялата еко-система, която 'емулира' unix среда - като почнеш от cp, rm, mv; продължиш с всякакви мейкове, perl, питони, гущери, даже и http и SQL съм виждал.

може би от там идат гигабайтите. гледам да не ползвам таквиз тулове, но понякога ме наляга мързела (next->next->next), за щастие дисковете по 2ТВ са под 100 кинта :P
за мен крос-среда за unix компилатор си е ... компилатор в unix среда с различен таргет, където гореспоменатото си го има нейтив.

Автор:  TheWizard [ Нед Авг 25, 2019 12:18 pm ]
Заглавие:  Re: GCC

Гледам да избягам от емулацията на еко системата
То реално cc1 & cc1plus правят крос компилацията, всичко останало е хидъри и библиотеки

BTW: М$ ползват за ARM poky дистрибуцията

Автор:  TheWizard [ Пон Авг 26, 2019 6:13 pm ]
Заглавие:  Re: GCC

с М$ компилатора не става :) направили са къстъм линкер за сферата ( нещо мачкат хешовете ) девайса не разпознава ELF-a
ще диря компактен gcc-linux-softfloat за експерименти

Автор:  TheWizard [ Вто Авг 27, 2019 6:55 pm ]
Заглавие:  Re: GCC

допълнение: не става що ползва musl https://www.musl-libc.org/intro.html
а аз се опитвам да го ползвам за нормален gnu :)

Автор:  TheWizard [ Чет Сеп 05, 2019 6:05 pm ]
Заглавие:  Re: GCC

Linux Library: Как се прави динамичен stub на статична библиотека?

Автор:  palavrov [ Пет Сеп 06, 2019 12:14 am ]
Заглавие:  Re: GCC

TheWizard написа:
Linux Library: Как се прави динамичен stub на статична библиотека?

Че то не е ли едно и също? В смисъл, че тя библиотеката си е една и съща и в двата случая а разликата е как линкера я добавя в крайния резултат - дали изкопира от нея всички функции и данни които се ползват т.е. статично линкване или пък само вкарва референция о коя библиотека да се зареди каквото трябва по време на изпълнение т.е. динамично линкване.

Автор:  TheWizard [ Пет Сеп 06, 2019 7:40 am ]
Заглавие:  Re: GCC

не искам да линква цялата функция в моята аппликация а само подобен stub

Код:
int open(const char *file, int oflag, ...)
open                                   
                ADR             R12, 0x3F0
                ADD             R12, R12, #0x10000
                LDR             PC, [R12,#(open_ptr - 0x103F0)]! ; __imp_open


това е генерация на това
Код:
int __open(const char * path, int flag) {
    return open(path, flag);
}

gcc -shared -Wl,-soname,libfoo.so.1 -o libfoo.so.1.0 stub.o
обаче __open искам да е алиас на оригинала


имам библиотека която не трябва да имам - тя е в кернела
искам да направя моя библиотека която да сочи истинската, един вид API

всъщност като имам статичната реално се прави горния stub което не е голяма загуба на памет

във оригиналната стуба е само BX LR и хаш таблици (шота)

Прикачени файлове:
Untitled-1.jpg
Untitled-1.jpg [ 83.41 KiB | Прегледано 15101 пъти ]

Автор:  palavrov [ Пет Сеп 06, 2019 11:26 am ]
Заглавие:  Re: GCC

Ще погледна по късно, че сега не мога да се фокусирам (акъла ми е другаде) - ама да те питам - тази ИДА откъде я свали? Че от години не ми е трябвала и оня ден ми се наложи да декомпилирам 1к AVR фирмуер и ударих на камък без нея ...

Автор:  TheWizard [ Пет Сеп 06, 2019 11:49 am ]
Заглавие:  Re: GCC

най-вероятно от някой тракер но не си спомням

Страница 1 от 6 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/