2011-11-25 12 views
10

autoconf/automake są starał się wspierać starożytnych kompilatorów C, które nie rozumieją jednoczesne korzystanie z opcji -c i -o (Utwórz plik obiektowy z to name) . Jest AM_PROG_CC_C_O i specjalny skrypt opakowania oraz instrukcja Automake warns you to use them, jeśli chcesz korzystać z trybu subdir-objects.Unix C++ kompilatory, które nie rozumieją -c -o

Tam nie jest an AM_PROG_CXX_C_O. Nie jest trudno zmodyfikować, aby przetestować kompilator C++, ale zastanawiam się, czy jest to konieczne. Czy kiedykolwiek istniał kompilator Cx w języku Unix (Cfront, może?), Który nie obsługiwał jednoczesnego korzystania z -c i -o? Przyjdźcie do tego, jak stare są kompilatory, które go nie obsługują - czy był na przykład jakiś kompilator wspierający C89 z tym problemem?

+0

+1: Zdecydowanie były takie kompilatory (C). Niezależnie od tego, czy istnieją jakiekolwiek obecne (obsługiwane) kompilatory bez tego obiektu, ważne pytanie. To, czy wciąż istnieją stare wersje takich kompilatorów, jest trudniejsze do oszacowania; oprogramowanie ma tendencję do używania długo po "najlepszym przed końcem". –

+3

Problem z opcją "-c -o" jest taki, że -c potencjalnie sprawia, że ​​kompilator tworzy wiele wyjść, w którym to momencie opcja -o staje się bezsensowna. –

+0

@SimonRichter To interesujący punkt, a jednak ostatni kompilator, który * ja * osobiście o tym wiem, nie zrobił nic sensownego z '-c -o' jest Solaris's K & R-only'/bin/cc', który isn ' t nawet coś, od czego możesz zacząć i ładować się na nowszy kompilator. – zwol

Odpowiedz

1

Istnieją kompilatory, głównie przeznaczone dla branży wbudowanej, w których należy ręcznie skompilować i połączyć. W takich przypadkach opcja -c nie ma sensu.

Biorąc pod uwagę, że Linux jest coraz częściej wykorzystywany w systemach wbudowanych, zdecydowanie należy wziąć je pod uwagę.

+0

Nie wiem, co masz na myśli przez "ręcznie skompiluj i połącz." Czy możesz wskazać mi konkretny przykład kompilatora z właściwością, o której myślisz, najlepiej do jej dokumentacji? – zwol

+0

Pozwólcie mi też podkreślić, że nie jest to * specyficzne dla Linuksa pytanie, o które proszę. Rozumiem, że jest to głównie kwestia o znaczeniu historycznym. – zwol

+0

Przez "ręcznie" rozumiem, że wydajesz jedno polecenie do kompilacji do pliku obiektowego, a drugie do połączenia. Nie ma żadnego wrappera, który kompiluje i łączy, dlatego nie ma sensu posiadanie opcji '-c'. Jednym konkretnym przykładem są kompilatory z 'IAR Systems', które są częścią' IAR Embedded Workbench'. Nie jestem pewien, czy podręczniki są w trybie online, ale można pobrać tak zwaną wersję Kickstart, aby je uzyskać. – Lindydancer

Powiązane problemy