Make должен выплевывать командные строки, в которых он запущен. Они должны сказать вам, какой компилятор он вызывает.
И с тех пор, как вы их опубликовали, теперь ясно, что make звонит g++
. Кроме того, файлы g++
заканчиваются компиляцией в .cc
, поэтому код во внешнем интерфейсе g++
, который вызывает компилятор C для файлов .c
, не будет активирован.
Могу поспорить, что вас смущает тот факт, что iostream.h
не может быть найден. По разным странным причинам комитет по стандартам решил опустить .h
в именах стандартных заголовочных файлов. Большинство компиляторов все еще поддерживали использование .h
в течение некоторого времени после этого, чтобы избежать взлома старого кода. Но это было исключено в последние несколько лет, отчасти потому, что почти все программы, которые включают .h
версию файла заголовка, также не ожидают, что символы будут находиться в пространстве имен ::std
.
Кроме того, большинство людей перестали использовать расширение .cc
для C ++ (мне это очень грустно, мне понравилось). В совокупности эти вещи говорят мне, что вы пытаетесь скомпилировать код, написанный для старых компиляторов C ++, предшествующих стандартам, и который никогда не обновлялся. Если вы хотите, чтобы код компилировался, у вас впереди немного усилий по переносу.
Первый шаг в вашем процессе переноса - заменить #include <iostream.h>
на #include <iostream>
. Также включает в себя стандартные заголовки библиотеки C, такие как stdlib.h
, должны быть заменены включениями версий C ++, такими как cstdlib
.
Но и этого будет больше. Код, скорее всего, ожидает, что такие вещи, как cerr
и cout
будут в пространстве имен корневого уровня, а в стандартах C ++ они есть в пространстве имен ::std
. Вам нужно будет исправить код, чтобы использовать это пространство имен.
К счастью, все эти вещи, вероятно, приведут к ошибкам компилятора из-за отсутствия включаемых файлов или символов, которые он не может найти, так что это не будет слишком сложно.
Я только что посмотрел библиотеку nachos , которую вы пытаетесь скомпилировать, и она действительно очень старая и не обновлялась в течение очень долгого времени. Компилятор, который они упоминают, это gcc 2.6, который является абсолютно древним компилятором.