2016-02-16 1 views
3

Я клонировал чей-то код C++ из github, но не смог его выполнить. Автор сказал мне, что версия gcc, которую он использовал, - 4.8.4, и он мог успешно запустить ее. Поэтому я установил gcc48 с помощью brew install homebrew/versions/gcc48 и задал версию gcc в makefile, помещенную в его папку с кодом.Как установить gcc -4.8.4 с помощью homebrew в os x 10.10

Однако, ошибка есть во время компиляции:

g++-4.8 -c -pipe -O3 BurstyBTM.cpp -o BurstyBTM.o 
BurstyBTM.cpp: In member function 'Pvec<double> BurstyBTM::compute_pz_b(Biterm&)': 
BurstyBTM.cpp:129:23: error: could not convert 'pz.Pvec<T>::normalize<double>(0.0)' from 'void' to 'Pvec<double>' 
    return pz.normalize(); 
        ^
BurstyBTM.cpp: In member function 'void BurstyBTM::save_pz(std::string)': 
BurstyBTM.cpp:158:41: error: conversion from 'void' to non-scalar type 'Pvec<double>' requested 
    Pvec<double> pz = nb_z.normalize(alpha); 
             ^
BurstyBTM.cpp: In member function 'void BurstyBTM::save_pw_z(std::string)': 
BurstyBTM.cpp:164:37: error: conversion from 'void' to non-scalar type 'Pmat<double>' requested 
    Pmat<double> pw_z = nwz.normr(beta); 
            ^
make: *** [BurstyBTM.o] Error 1 

Как я могу установить ССАГПЗ с версией 4.8.4 конкретно? В противном случае, как я могу справиться с этой проблемой? Заранее спасибо!

+0

Где 'BurstyBTM.' приходят из ? – purplepsycho

+0

В папке «BurstyBTM.h» и «BurstyBTM.cpp» есть «BurstyBTM.h» и «BurstyBTM.cpp». –

+0

Можете ли вы разместить строки ошибок, которые над символом ld: не найдены для архитектуры x86_64'? – purplepsycho

ответ

0

Вы пытаетесь скомпилировать свой код с помощью компилятора C вместо C++.

В макияжем файле замените

CC=gcc-4.8 

по

CC=g++-4.8 

Если у вас нет г ++ установлен, установите его с

brew install gcc48 --enable-cxx 
+0

Спасибо за ответ. Но на этот раз получена эта ошибка: 'g ++ - 4.8 BurstyBTM.o main.o -o bbtm Неопределенные символы для архитектуры x86_64: " BurstyBTM :: run (std :: basic_string , std :: распределитель >, станд :: basic_string <голец, СТД :: char_traits , станд :: распределителей >)», ссылочные от: _MAIN в main.o LD: символ (ы) не найдено для архитектуры x86_64 collect2: ошибка: ld возвращен 1 статус выхода make: *** [bbtm] Ошибка 1 ' –

+0

Вы пытались« сделать чистым »раньше? – purplepsycho

+0

Да, но я думаю, что это, возможно, не нужно: 'make: *** Нет правила, чтобы сделать цель чистой. Stop.' –

 Смежные вопросы

  • Нет связанных вопросов^_^