В настоящее время я пытаюсь составить эту основную программу фестиваля
#include <iostream>
#include <festival/festival.h>
#define HEAP_SIZE 210000
#define LOAD_INIT_FILES 1
using namespace std;int main()
{
festival_initialize(LOAD_INIT_FILES, HEAP_SIZE);
festival_say_text("Hello World");
festival_wait_for_spooler();
return 0;
}
Когда я пытаюсь собрать программу с помощью g ++, я получаю следующие ошибки:
speech_tools/lib/libestools.a $USER/Downloads/festival/speech_tools/lib/libeststring.a
$USER/Downloads/festival/speech_tools/lib/libestools.a(EST_PST.o): In function `EST_PredictionSuffixTree::test(EST_String)':
EST_PST.cc:(.text+0x2d30): undefined reference to `confusion(EST_TKVL<EST_String, EST_String>&, EST_TList<EST_String>&)'
EST_PST.cc:(.text+0x2d40): undefined reference to `print_confusion(EST_FMatrix const&, EST_TKVL<EST_String, EST_String>&, EST_TList<EST_String>&)'
$USER/Downloads/festival/speech_tools/lib/libestools.a(wfst_ops.o): In function `EST_WFST::determinize(EST_WFST const&)':
wfst_ops.cc:(.text+0x1136): undefined reference to `EST_THash<int, int>::EST_THash(int, unsigned int (*)(int const&, unsigned int))'
wfst_ops.cc:(.text+0x1206): undefined reference to `EST_THash<int, int>::val(int const&, int&) const'
wfst_ops.cc:(.text+0x122f): undefined reference to `EST_THash<int, int>::add_item(int const&, int const&, int)'
wfst_ops.cc:(.text+0x1568): undefined reference to `EST_THash<int, int>::~EST_THash()'
wfst_ops.cc:(.text+0x17d8): undefined reference to `EST_THash<int, int>::~EST_THash()'
$USER/Downloads/festival/speech_tools/lib/libestools.a(editline.o): In function `readline':
editline.c:(.text+0x7d2a): undefined reference to `tgetent'
editline.c:(.text+0x7d85): undefined reference to `tgetstr'
editline.c:(.text+0x7d9d): undefined reference to `tgetstr'
editline.c:(.text+0x7db5): undefined reference to `tgetstr'
editline.c:(.text+0x7dcd): undefined reference to `tgetstr'
editline.c:(.text+0x7e65): undefined reference to `tgetstr'
editline.c:(.text+0x7e87): undefined reference to `tgetnum'
editline.c:(.text+0x7e99): undefined reference to `tgetnum'
editline.c:(.text+0x7f21): undefined reference to `tgetstr'
collect2: error: ld returned 1 exit status
Согласно http://festvox.org/docs/manual-2.4.0/festival_28.html#C_002fC_002b_002b-API, Я добавил Festival / src / include и speech_tools / include в путь поиска, в дополнение к связыванию с Festival / src / lib / libFestival.a, speech_tools / lib / libestools.a, speech_tools / lib / libestbase.a и speech_tools / Библиотека / libeststring.a.
Я пытаюсь построить это на Arch Linux с g ++ и Festival 2.4.0.
РЕДАКТИРОВАТЬ:
Используемая мной команда построения
g++ -o bin/Debug/festival_test obj/Debug/main.o /usr/lib/libcurl.so /home/joshua/Downloads/festival/festival/src/lib/libFestival.a /home/joshua/Downloads/festival/speech_tools/lib/libestbase.a /home/joshua/Downloads/festival/speech_tools/lib/libestools.a /home/joshua/Downloads/festival/speech_tools/lib/libeststring.a
Я использую CodeBlocks, так что это команда сборки по умолчанию
РЕДАКТИРОВАТЬ 2:
Добавление -lncurses к команде build устранило неопределенные ошибки ссылок, относящиеся к readline, но другие ошибки все еще сохраняются
/home/joshua/Downloads/festival/speech_tools/lib/libestools.a(EST_PST.o): In function `EST_PredictionSuffixTree::test(EST_String)':
EST_PST.cc:(.text+0x2d30): undefined reference to `confusion(EST_TKVL<EST_String, EST_String>&, EST_TList<EST_String>&)'
EST_PST.cc:(.text+0x2d40): undefined reference to `print_confusion(EST_FMatrix const&, EST_TKVL<EST_String, EST_String>&, EST_TList<EST_String>&)'
/home/joshua/Downloads/festival/speech_tools/lib/libestools.a(wfst_ops.o): In function `EST_WFST::determinize(EST_WFST const&)':
wfst_ops.cc:(.text+0x1136): undefined reference to `EST_THash<int, int>::EST_THash(int, unsigned int (*)(int const&, unsigned int))'
wfst_ops.cc:(.text+0x1206): undefined reference to `EST_THash<int, int>::val(int const&, int&) const'
wfst_ops.cc:(.text+0x122f): undefined reference to `EST_THash<int, int>::add_item(int const&, int const&, int)'
wfst_ops.cc:(.text+0x1568): undefined reference to `EST_THash<int, int>::~EST_THash()'
wfst_ops.cc:(.text+0x17d8): undefined reference to `EST_THash<int, int>::~EST_THash()'
РЕДАКТИРОВАТЬ 3:
Установка libestbase для последней ссылки исправила ошибку.
Это может быть связано с этим сообщением об ошибке:
https://bugzilla.redhat.com/show_bug.cgi?id=499837
Это предполагает, что вы явно ссылаетесь на Ncurses библиотека для библиотеки readline, которая, кажется, включена другой вашей библиотекой. Итак, вы бы добавили:
-lncurses
к вашей команде.
Других решений пока нет …