Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: z3nth10n en 21 Noviembre 2020, 20:09 pm



Título: No puedo cross-compilar usando las librerías ARM de Loquendo con GCC, se requieren los simbolos GLIBC_2.0, 2.1 y 2.3
Publicado por: z3nth10n en 21 Noviembre 2020, 20:09 pm
Buenas foro,

Pues siguiendo la tesis doctoral que hizo Javier (https://addi.ehu.es/bitstream/handle/10810/27565/TESIS_OLASO_FERNANDEZ_JAVIER%20MIKEL.pdf?sequence=1&isAllowed=y) y solo teniendo disponible el shared object (*.so) ELF 32-bit LSB shared object, ARM (obtenido al ejecutar el comando file) de los shared objects de Loquendo para Linux, en este caso, Tom Tom .

Me gustaría intentar compilar el programa que sugirió Javier, llamado text2audio, y disponible en el mismo pdf:

Código
  1. #include <stdio.h>
  2. #include "../sdk/win/LTTS7/include/loqtts.h" /* Loquendo TTS include file */
  3. #include <string.h>
  4. #define CODING tts_LINEAR // "l" /* "l" (linear), "a" (A-law), "u" (U-law) */
  5. #define SAMPLE_RATE 32000 /* Use 8000 for A-law or U-law coding */
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9.    ttsHandleType hInstance; /* Instance handle */
  10.    ttsHandleType hVoice; /* Voice handle */
  11.    ttsResultType err; /* Error code returned by TTS APIs */
  12.  
  13.    char* p = "Jorge";
  14.    char* fich = "sample.wav";
  15.    char frase[5000]="";
  16.    int i;
  17.  
  18.    fprintf (stderr,"Number: \%i\n",argc);
  19.    if(argc > 3) {
  20.        p = argv[1]; // Voice
  21.        fich = argv[2]; // Path
  22.        for(i=3;i<argc;i++)
  23.        {
  24.            strcat(frase,argv[i]);
  25.            strcat(frase," ");
  26.        }
  27.        fprintf (stderr,"Sentence: \%s\n",frase);
  28.        fprintf (stderr,"File : \%s\n",fich);
  29.        } else {
  30.            fprintf(stderr, "Exec '\%s <speaker> <file> <text> '\n", argv[0]);
  31.            return -1;
  32.        }
  33.        fprintf(stderr, "Using voice \%s\n", p);
  34.  
  35.        /* Initializes the LoquendoTTS Instance */
  36.        err = ttsNewSession(&hInstance, NULL);
  37.        if (err != tts_OK)
  38.        {
  39.            fprintf(stderr, "\%s", ttsGetErrorMessage(NULL));
  40.            return err;
  41.        }
  42.  
  43.        /* Sets the voice parameters */
  44.        err = ttsNewVoice(&hVoice, hInstance, p); // 6 -> 7: SAMPLE_RATE, CODING
  45.        if (err != tts_OK)
  46.        {
  47.            fprintf(stderr, "\%s", ttsGetErrorMessage(hInstance));
  48.            (void)ttsDeleteSession(hInstance);
  49.            return err;
  50.        }
  51.  
  52.        /* Sends samples directly to the audio board */
  53.        //err = ttsSetAudio(hInstance, "LoqAudioFile", argv[2], CODING, 0);
  54.        err = ttsSetAudio(hInstance, "LTTS7AudioBoard", argv[2], SAMPLE_RATE, CODING, tts_STEREO, 0);
  55.  
  56.        if (err != tts_OK)
  57.        {
  58.            fprintf(stderr, "\%s", ttsGetErrorMessage(hInstance));
  59.            (void)ttsDeleteSession(hInstance);
  60.            return err;
  61.        }
  62.  
  63.        /* Converts text to speech */
  64.        err = ttsRead(
  65.            hInstance, /* Instance handle */
  66.            frase, /* Input */
  67.            ttsFALSE, // async
  68.            ttsFALSE, // fromFile
  69.            0);
  70.  
  71.        if (err != tts_OK)
  72.        {
  73.            fprintf(stderr, "\%s", ttsGetErrorMessage(hInstance));
  74.            (void)ttsDeleteSession(hInstance);
  75.            return err;
  76.        }
  77.  
  78.        /* Closes the Loquendo TTS instance; the voice will be automatically closed */
  79.        (void)ttsDeleteSession(hInstance);
  80.        return 0;
  81. }

(Esta versión es un poco diferente de la original porque la adapté para la versión LTTS 7, en lugar de la v6)

La idea es tener un endpoint en PHP que pueda usarse para generar archivos mp3 / wav para un texto (usando TTS internamente).

Los métodos que probé ya:

  • Instalando de una instancia de Loquendo para Windows en Wine y PlayOnLinux con Balabolka (con CLI): https://eltallerdemiku.blogspot.com/2018/12/como-instalr-loquendo-en-linux-con.html
  • Usando lo mismo, pero con los bindings de Ruby disponibles aquí: https://github.com/jojje/win32-loquendo/ (bajo PlayOnLinux y mi último enfoque fue intentar ejecutar ruby ​​directamente bajo Linux (sin emulación) con rvm, pero tuve muchos problemas al intentar instalar las gemas en una instancia de 32 bits, al menos la versión de 64 bits de Ruby en Windows no funcionó)
  • Preguntar en el repositorio de eSpeak: https://github.com/espeak-ng/espeak-ng/issues/836
  • Preguntando en RHVoice: https://github.com/Olga-Yakovleva/RHVoice/issues/247
  • Preguntando a Escolha Tecnologia, ya que ellos también usan estas voces. Pero me dijeron que no revelarían ningún secreto sobre su negocio.
  • Enviando un email a Nuance, ya que compraron Loquendo en 2011 y tenían Loquendo disponible hasta 2017. Y como dije sé que hay versiones de Linux disponibles porque están indicadas en el Manual de Instalación. (Aunque estoy pendiente de llamar este lunes al soporte técnico: https://www.nuance.com/es-es/about-us/contact-us.html a ver si con suerte siguieran dando soporte a Loquendo, pero dudo que un producto de hace 10 años lo tenga, y a parte que no soy ni cliente...)
  • Intentando cargar la librería con PHP ffi, intentando recrear lo mismo que hizo el proyecto win32-loquendo, sin suerte.
  • Preguntando a Javier Mikel Olaso (encontré su correo electrónico en Google), como hizo una tesis doctoral usando Loquendo en Linux: https://addi.ehu.es/bitstream/handle/10810/27565/TESIS_OLASO_FERNANDEZ_JAVIER%20MIKEL.pdf
  • Como dije, vi que el Manual de instalación tiene referencias a su producto en Linux. Descubrí que la biblioteca Loquendo TTS tiene el siguiente nombre en Linux: libLoqTTS7. Entonces busqué esa palabra con Google Dorks, y solo encontré referencias a GPS / Foros de Tomtom ...
  • Intentando localizar los objetos compartidos para i368 o amd64 en Linux, como se indica en la instalación manual de la guía de usuario (PDF) del producto original de Loquendo.

Por esta razón, mi último intento es emular las bibliotecas ARM instalando qemu-user-static y usando /usr/bin/qemu-arm-static (como MinusFour me recomendó, aunque también me dijo que lo más seguro que no funcionase) (ya que creo que este será el método menos costoso en lo que a uso de recursos se refiere). Pero para esto, tendré que realizar cross compile del programa text2audio para que sea compatible con la arquitectura ARM, si no, gcc mostrará el siguiente error: error adding symbols: file in wrong

Como me veo obligado a compilar el código de text2audio para la arquitectura arm, he decidido instalar la versión gcc para esta arquitectura siguiendo este tutorial: https://www.acmesystems.it/arm9_toolchain

Este fue el comando que usé para compilar mi programa c:

Código
  1. $ arm-linux-gnueabihf-gcc -L$d/sdk/linux/LoquendoTTS/lib -I$d/sdk/win/LTTS7/include -o txt2audio $d/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so txt2audio.c

Probé las versiones arm-linux-gnueabihf-gcc y arm-linux-gnueabi-gcc sin suerte. Se produjeron los siguientes errores:

Citar
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `pow@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `fwrite@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `pthread_detach@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `sprintf@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `printf@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `stderr@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `strchr@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `sqrt@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `strncat@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `fread@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `localtime_r@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `shmget@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `getpid@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `dlclose@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `log@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `gettimeofday@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `strspn@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `memset@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `puts@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `gethostname@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `stdout@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `getenv@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `opendir@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `strstr@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `pthread_cond_init@GLIBC_2.3.2'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `semctl@GLIBC_2.2'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `fseek@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `fscanf@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `shmat@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `clock_gettime@GLIBC_2.2'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `remove@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `fileno@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `__ctype_b_loc@GLIBC_2.3'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `pthread_mutex_destroy@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `exp@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `fputc@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `fgets@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `semop@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `__strtod_internal@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `dlsym@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `time@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `strrchr@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `shmdt@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `dlopen@GLIBC_2.1'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `sin@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `rand@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `pthread_cond_wait@GLIBC_2.3.2'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `readdir@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `nanosleep@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `__strtol_internal@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `log10@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `closedir@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `strncmp@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `pthread_self@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `sscanf@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `pthread_cond_signal@GLIBC_2.3.2'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `ceil@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `strcspn@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `strcat@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `fclose@GLIBC_2.1'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `fgetc@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `memmove@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `strpbrk@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `strcpy@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `strncpy@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `pthread_mutex_lock@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `fprintf@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `free@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `srand@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `mmap@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `fnmatch@GLIBC_2.2.3'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `pthread_join@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `pthread_create@GLIBC_2.1'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `realloc@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `strlen@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `memcpy@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `stdin@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `pthread_mutex_unlock@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `strcmp@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `pthread_cond_destroy@GLIBC_2.3.2'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `dlerror@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `__ctype_toupper_loc@GLIBC_2.3'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `pthread_cond_timedwait@GLIBC_2.3.2'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `modf@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `malloc@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `memcmp@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `pthread_mutex_init@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `cos@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `semget@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `ftell@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `fputs@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `fopen@GLIBC_2.1'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLTTS7Util.so: undefined reference to `munmap@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `putchar@GLIBC_2.0'
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: /xxx/tts/sdk/linux/LoquendoTTS/bin/libLoqTTS7.so: undefined reference to `fflush@GLIBC_2.0'

Revisé la siguiente respuesta (https://stackoverflow.com/questions/29557683/undefined-reference-to-symbol-dlsymglibc-2-4/29563242) (en StackOverflow) que sugería usar el comando man seguido del nombre del símbolo, por ejemplo, man pow sugiere usar la bandera -lm (siempre después del argumento -o) ...

Lo probé sin suerte. Creo que el problema está en la versión GLIBC que requiere el objeto compartido.

Entonces, ¿cómo puedo usar una versión diferente en el proceso de compilación cruzada para ARM y GLIBC 2.0?