Нет такого файла или каталога ошибка компиляции

Я пытаюсь скомпилировать программу .cpp из Debian 6. У меня есть рабочий make-файл, который работает только с архивами .c, но мне нужно скомпилировать мою программу на .cpp. Итак, вот его make-файл:

#
# Build the examples.
#

# The great thing about GNU Make is that it knows so much about your     lifestyle, you don't need to
# tell it the obvious things. This file is a minimal makefile.

# You run this makefile by typing `make' in the directory with the   makefile

# You can find out more about make by typing `info make'.

# This tells Make that we need to link everything with the robot code:
LDLIBS=/usr/lib/robot.a

CC=gcc

# This variable has a handy copy of all the things we aim to produce
EXEC= read_sensor turn_on_and_off control_joint cerrar_mano

# Thses are all the things we need to compile:
all: ${EXEC}

CFLAGS=-I/usr/realtime/include/ -D_ISOC99_SOURCE -D_GNU_SOURCE - rtai_types -rtai_lxrt

# Make now looks around the directory, finds the read_sensor.c and
# turn_on_and_off.c files, works out it can compile them into the
# read_sensor and turn_on_and_off executables, and does so!

# However, for the kernel modules, we need to do a bit more.
rt_control: rt_control.o
ld -E -O2 -r -o $@ $^

# This is an example of making a binary from several object files, as an   example only!
fred: bert.o jim.o
ld -E -O2 -o $@ $^

# We need to tell the compiler quite a lot about where to find the right  header files
rt_control.o: control.c
$(CC) -c -O2  -DREALTIME -DRTAI_3  -I./include/ -I. -I../  -isystem     /usr/realtime/include/  -isystem /usr/src/linux/include   -o $@ $^# We put some housekeeping in here:

# This target is used to remove intermediate files Make produces.
clean:; rm -f *.o
# This target is used to remove output files Make produces as well.
realclean: clean
rm -f ${EXEC}

Поэтому, когда я пишу на терминале, сделайте myprogramname.cpp Вот что я получаю:

In file included from /usr/include/robot/robot.h:38,
from Programa_Hand2.cpp:4:
/usr/include/robot/sensor.h:24:44: error: rtai_types.h: No such file or  directory
/usr/include/robot/sensor.h:38:23: error: rtai_lxrt.h: No such file or directory
In file included from /usr/include/robot/robot.h:38,
from Programa_Hand2.cpp:4:
/usr/include/robot/sensor.h:168: error: 'RTIME' does not name a type
In file included from /usr/include/robot/robot.h:38,
from Programa_Hand2.cpp:4:
/usr/include/robot/sensor.h:178: error: 'RTIME' does not name a type
In file included from Programa_Hand2.cpp:4:
/usr/include/robot/robot.h:194: error: 'RTIME' does not name a type
/usr/include/robot/robot.h:244: error: 'RTIME' does not name a type
Programa_Hand2.cpp: In function 'int main()':
Programa_Hand2.cpp:18: error: expected initializer before 'printf'
Programa_Hand2.cpp:19: error: 'f' was not declared in this scope
hand@hand-cartagena:~/Desktop/Joaquin/examples$ make Programa_Hand2
g++     Programa_Hand2.cpp  /usr/lib/robot.a -o Programa_Hand2
In file included from /usr/include/robot/robot.h:38,
from Programa_Hand2.cpp:4:
/usr/include/robot/sensor.h:24:44: error: rtai_types.h: No such file or  directory
/usr/include/robot/sensor.h:38:23: error: rtai_lxrt.h: No such file or directory
In file included from /usr/include/robot/robot.h:38,
from Programa_Hand2.cpp:4:
/usr/include/robot/sensor.h:168: error: 'RTIME' does not name a type
In file included from /usr/include/robot/robot.h:38,
from Programa_Hand2.cpp:4:
/usr/include/robot/sensor.h:178: error: 'RTIME' does not name a type
In file included from Programa_Hand2.cpp:4:
/usr/include/robot/robot.h:194: error: 'RTIME' does not name a type
/usr/include/robot/robot.h:244: error: 'RTIME' does not name a type
Programa_Hand2.cpp: In function 'int main()':
Programa_Hand2.cpp:18: error: expected initializer before 'printf'
Programa_Hand2.cpp:19: error: 'f' was not declared in this scope
make: *** [Programa_Hand2] Error 1

Также пытался с gcc -o Programa_Hand2 Programa_Hand2.cpp и получить ту же ошибку, я думаю, что это то, что я должен изменить с make-файлом, но не знаю, что там не так
Есть идеи? Я новичок в программировании и Linux, так что я немного схожу с ума от этого, потому что мне нужно, чтобы программа была скомпилирована на c ++, и я скомпилировал ее и правильно работает на c. Спасибо за вашу помощь!

Изменить: некоторые исследования из Интернета, кажется, что RTAI не поддерживает C ++; так есть ли способ скомпилировать его в C ++? Кроме того, мои #include являются:

#include <stdio.h>
#include <robot/robot.h>
#include <unistd.h>
#include <error.h>
#include <iostream>

#include "RobotConfig.h"

Еще раз спасибо!

0

Решение

Короче говоря, вам нужно использовать команду g ++, а не gcc для файлов C ++.

Вам нужно компилировать файлы C ++ с помощью компилятора C ++, а не компилятора C, и здесь есть различия.

Команда для компилятора GNU C ++ — это g ++, если она у вас установлена. Вероятно, так как у вас, похоже, есть компилятор Си.

Добавьте переменную в ваш Makefile с именем CXX и установите ее равной g ++. Затем скомпилируйте свой код C ++, используя переменную CXX в качестве команды вместо переменной CC.

$ (CXX) -o <.output имя файла> <.cpp файлы идут сюда>

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]