a co ma crosscompiler do braku biblioteki w systemie wbudowanym? |
To, że na hoście możesz korzystać z bibliotek niedostępnych na targecie i robić wszystko co chcesz, byleby uzyskać binarkę uruchamialną na targecie.
jest to oczywiste, że do kompilacji na inny procesor używa się crosscompilera |
Możesz budować nawet na ten sam procesor. Na przykład stawiając Linuksa ze źródeł zwykle się z niego korzysta (nawet jeśli architektura jest taka sama). Miałem na myśli głównie rozgraniczenie hosta od targeta, które rozwiązuje część problemów (bo dzięki temu są rzeczy, których możesz użyć nawet jeśli są niekompilowalne na targecie).
masz np. 4MB (tak 4MB) na system + biblioteki + programy i nie masz miejsca na dodanie nowych bibliotek |
Na hoście możesz mieć nawet 1 TB i instalować co tylko chcesz, byleby wyprodukować binarkę, która na targecie zmieści się na tych 4 MB i będzie niezależna od hosta.
Masz program napisany w C, a rozbudowujesz go dalej w C++? |
Dlaczego nie? Jeśli nie zamierzasz modyfikować biblioteki napisanej w C, to ją sobie zbuduj nawet w C i zlinkuj ze swoim kodem w C++. W wielu przypadkach takie połączenie zadziała bez większych problemów.
po co robić takie pomieszanie z poplątaniem? |
Bo dzięki temu dopóki nie ruszasz samej biblioteki, to nie musisz niczego pisać w C. A jeśli zechcesz już ją zmieniać i sama biblioteka również idzie w miliony linii kodu, to masz już jakieś ściśle wyznaczone reguły określone przez istniejący kod i nie możesz ich łamać bez wielu modyfikacji, czy to C, czy C++. Wtedy i tak większe ograniczenia narzuca istniejący kod niż sam język.
Ale nawet wtedy możesz napisać coś nowego w C++ i połączyć to z istniejącym kodem w C (lub odwrotnie, w zależności od potrzeb). Dojdzie jakieś
extern "C"
, dojdą oddzielne nagłówki do C i do C++ i w rezultacie otrzymasz własny program/bibliotekę działający w obu językach.
Co jest nie tak z "muszę pisać w C"? |
Tylko to, że nie wiadomo, dlaczego autor tematu chce koniecznie pisać nowy kod w C, skoro równie dobrze mógłby to robić w C++. A nawet jeśli po prostu „łatwiej mu się pisze w C”, to nie wiadomo, dlaczego nie jest w stanie wykorzystać sposobów zarządzania kodem z C++ w swoim kodzie w C (czyli na przykład zaimplementować funkcji wirtualnych w C, jeśli ich potrzebuje).