2016-07-19 2 views
0

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

# 
# 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 [email protected] $^ 

# 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 [email protected] $^ 

# 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 [email protected] $^ 


# 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 
[email protected]:~/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 

Также попытался с НКОЙ -o Programa_Hand2 Programa_Hand2.cpp и получать то же самое ошибка, я думаю, что это что-то мне нужно изменить с помощью makefile, но не знаю, что там не так. Любые идеи? Я новичок в программировании и Linux, поэтому я немного разозлился на это, потому что мне нужна программа для компиляции на C++, и я скомпилировал ее и правильно работал на c. Спасибо за вашу помощь!

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

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

#include "RobotConfig.h" 

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

ответ

1

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

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

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

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

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

+0

Спасибо за ответ, я' попробовать то, что вы говорите! – Joaquin