lvklabs / chatbot

Chatbot is an open source platform to create Facebook and Gtalk/Gmail chatbots
39 stars 25 forks source link

Compilacion e instalacion del chatbot #38

Open Izikiel opened 11 years ago

Izikiel commented 11 years ago

Buenas, estoy tratanto de compilar el chatbot en debian, que deberia ser lo mismo para ubuntu. Cuando lo compilo, tira error de que libfries.a, libomlet.a, y libmorfo.a son incompatibles, y cancela la compilacion. Probe recompilar todas las librerias, pero luego tira un error de que no encuentra varias cosas de qxmpp, libreria que ya tengo instalada. otra cosa, como hicieron para compilar libmorfo? Yo checkoutee la ultima version de freeling, la compile, y genero una libfreeling.a, pero ninguna libmorfo.a Si tienen alguna idea de como lograr compilar el chatbot, les agradeceria que me la comenten. Un saludo

paglian commented 11 years ago

Si debería ser lo mismo para Debian. De hecho yo lo estoy compilando en Debian 7.0.

Algunas preguntas: Que debian estás usando? 32 o 64 bits? Las librerias precompiladas que están en el repo son para 32 bits Exactamente que dice el mensaje el error?

Me parece que la versión 3.0 de freeling no depende de libmorfo con lo cual no se genera el archivo libmorfo.a. Capaz que vasta con quitar las referencias a esa lib en el proyecto. (Por cuestiones historicas yo estoy usando la versión 2.2.2)

Izikiel commented 11 years ago

Estoy usando crunchbang de 64 bits, que es un debian tuneado. Yo probe originalmente recompilar Freeling 2.2, pero me aparecieron diferentes errores, y en la pagina de Freeling decían que habian solucionado eso para 3.0. No me acuerdo el especifico del error. Ahora despues de tocar un poco el Makefile me tira errores relativos a un namespace maco de freeling, con el archivo freelinglemmatizer.o

paglian commented 11 years ago

Si compilar freeling 2.2 es bastante complicado, requiere configurar muchas cosas.

Por favor, cuando reportes errores se lo más especifico posible. Si hay mensajes de error, copialos y pegalos. Que dice exactamente el mensaje de error ahora?

Izikiel commented 11 years ago

El mensaje:

g++ -m64 -Wl,-O1 -o chatbot main.o random.o settings.o csvdocument.o csvrow.o conversation.o conversationwriter.o conversationreader.o logger.o json.o crashhandler.o defaultsanitizer.o lemmatizerfactory.o sanitizerfactory.o enginefactory.o cb2engine.o tree.o globaltools.o scoringalgorithm.o matchpolicy.o condoutput.o condoutputlist.o variable.o varstack.o parser.o freelinglemmatizer.o appfacade.o rule.o chatbotrulesfile.o aiadapter.o rloghelper.o accountverifier.o chatbotfactory.o chatbottempfile.o mainwindow.o ruletreemodel.o ruletreeview.o ruleoutputwidget.o ruleinputwidget.o testconversationwidget.o portdialog.o exportdialog.o importdialog.o rosterwidget.o autocompletetextedit.o chathistorywidget.o linefilteredit.o ruletextview.o scorewidget.o tinyscorewidget.o detailsdialog.o optionswindow.o welcomewidget.o mainwindowrefactor.o sendscoredialog.o newupdatedialog.o testinputtext.o ruleeditwidget.o connectionwidget.o uploaderprogressdialog.o accountverifwidget.o historyhelper.o xmppchatbot.o fbchatbot.o gtalkchatbot.o chatbot.o chatcorpus.o fbownmessageextension.o cipher.o keymanagerfactory.o statsmanager.o history.o securestatsfile.o historystatshelper.o remoteloggerfactory.o rest.o userauth.o updater.o datauploaderfactory.o moc_settings.o moc_appfacade.o moc_accountverifier.o moc_mainwindow.o moc_ruletreemodel.o moc_ruletreeview.o moc_ruleoutputwidget.o moc_ruleinputwidget.o moc_testconversationwidget.o moc_portdialog.o moc_exportdialog.o moc_importdialog.o moc_rosterwidget.o moc_autocompletetextedit.o moc_chathistorywidget.o moc_linefilteredit.o moc_ruletextview.o moc_scorewidget.o moc_tinyscorewidget.o moc_detailsdialog.o moc_welcomewidget.o moc_optionswindow.o moc_sendscoredialog.o moc_newupdatedialog.o moc_updateexecutor.o moc_testinputtext.o moc_ruleeditwidget.o moc_connectionwidget.o moc_uploaderprogressdialog.o moc_accountverifwidget.o moc_xmppchatbot.o moc_chatbot.o moc_fbchatbot.o moc_fbownmessageextension.o moc_statsmanager.o moc_rest.o moc_userauth.o moc_updater.o moc_contestdatauploader.o moc_nullcontestdatauploader.o qrc_gnome_theme.o qrc_certs.o -L/usr/lib/x86_64-linux-gnu -L/home/izikiel/chatbot/src/chatbot/../third-party/QXmpp/lib -lqxmpp -L/usr/local/lib -L/home/izikiel/chatbot/src/chatbot/../third-party/Freeling/lib -lfreeling -lfries -lomlet -lQtXml -lQtGui -lQtNetwork -lQtCore -lpthread freelinglemmatizer.o: In function (anonymous namespace)::init(maco**, QHash<int, std::string> const&)': freelinglemmatizer.cpp:(.text+0x398): undefined reference tomaco_options::maco_options(std::string const&)' freelinglemmatizer.cpp:(.text+0x3f1): undefined reference to maco_options::set_active_modules(bool, bool, bool, bool, bool, bool, bool, bool, int, bool)' freelinglemmatizer.cpp:(.text+0x4dd): undefined reference tomaco_options::set_data_files(std::string const&, std::string const&, std::string const&, std::string const&, std::string const&, std::string const&, std::string const&, std::string const&)' freelinglemmatizer.cpp:(.text+0x7af): undefined reference to maco::maco(maco_options const&)' freelinglemmatizer.o: In functionLvk::Nlp::FreelingLemmatizer::FreelingLemmatizer()': freelinglemmatizer.cpp:(.text+0x1e98): undefined reference to tokenizer::tokenizer(std::string const&)' freelinglemmatizer.cpp:(.text+0x1f20): undefined reference tosplitter::splitter(std::string const&)' freelinglemmatizer.o: In function Lvk::Nlp::FreelingLemmatizer::tokenize(QString const&, QStringList&)': freelinglemmatizer.cpp:(.text+0x37fe): undefined reference totokenizer::tokenize(std::string const&, std::list<word, std::allocator >&)' freelinglemmatizer.o: In function Lvk::Nlp::FreelingLemmatizer::lemmatize(QString const&, QList<Lvk::Nlp::Word>&)': freelinglemmatizer.cpp:(.text+0x4522): undefined reference totokenizer::tokenize(std::string const&, std::list<word, std::allocator >&)' freelinglemmatizer.cpp:(.text+0x4583): undefined reference to splitter::split(std::list<word, std::allocator<word> > const&, bool, std::list<sentence, std::allocator<sentence> >&)' freelinglemmatizer.cpp:(.text+0x4599): undefined reference tomaco::analyze(std::list<sentence, std::allocator >&)' freelinglemmatizer.o: In function Lvk::Nlp::FreelingLemmatizer::~FreelingLemmatizer()': freelinglemmatizer.cpp:(.text+0x5939): undefined reference tomaco::~maco()' collect2: error: ld returned 1 exit status make: *\ [chatbot] Error 1

paglian commented 11 years ago

La compilación pasó OK. Pero falló el linker. Los simbolos que no está resolviendo son todos de Freeling. Con lo cual es un problema en tu lib de Freeling. Asegurate de que estés linkeando contra la que compilaste vos y no la que trae el proyecto.

Segun lo que me pegaste esta linkeando contra:

-L/usr/local/lib -L/home/izikiel/chatbot/src/chatbot/../third-party/Freeling/lib -lfreeling -lfries -lomlet -lQtXml -lQtGui -lQtNetwork -lQtCore -lpthread

Si estás linkeando contra el archivo correcto. Capaz que estás compilando Freeling con algun flag que lo hace incompatible con el proyecto de Qt.

Izikiel commented 11 years ago

Ok, gracias, ahi lo miro.