Команды ядра Ruby - PullRequest
       17

Команды ядра Ruby

0 голосов
/ 31 июля 2010

Я пытаюсь выполнить следующую команду в irb,

exec 'gcc j.cpp'

, но я получил следующую ошибку:

/tmp/ccYhafBj.o: In function `main':
j.cpp:(.text+0x14): undefined reference to `std::cout'
j.cpp:(.text+0x19): undefined reference to `std::basic_ostream >& std::operator >(std::basic_ostream >&, char const*)'
/tmp/ccYhafBj.o: In function `__static_initialization_and_destruction_0(int, int)':
j.cpp:(.text+0x41): undefined reference to `std::ios_base::Init::Init()'
j.cpp:(.text+0x46): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccYhafBj.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

Мой файл находится в том же каталоге, где я открылirb --simple-prompt для запуска файла.Содержимое моего файла:

#include <iostream>
using namespace std;
int main()
{    cout << "Hello World";
    return 0;
}

Может кто-нибудь сказать мне, где я не прав, и каким-то образом решить проблему.Все, что я хочу, это запустить файл j.cpp и получить вывод / ошибки, которые появляются в процессе.

1 Ответ

2 голосов
/ 31 июля 2010

Используйте компилятор C ++, а не компилятор C.

exec 'g++ j.cpp'

exec заменит текущий процесс, поэтому вы можете использовать вместо него обратные пометки.

output = `g++ j.cpp -o "prog" && ./prog`

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

...