[PD] Espeak external compilation/loading errors on Linux

Peter P. peterparker at fastmail.com
Mon Mar 15 18:38:21 CET 2021


Hi, list,

the modified Makefile works great, thanks IOhannes and Matthias! There
still seems some hickups with the object itself. Asking it to set a
texbuffer and synthesize from its help-patch, it posts a longer red
message to the pd console:

"an operation on the array 'array1' in the patch 'espeak-help.pd'
failed since it uses garray_getfloatarray while running 64-bit
(Tcl) INVALID COMMAND NAME: invalid command name "€cdk Àithin
"uplevel #0 $docmds"an operation on the array 'array1' in the patch
'espeak-help.pd'
failed since it uses garray_getfloatarray while running 64-bit"

Furthermore the object reports to synthesize at 22050Hz sampling rate,
but its playback in the help patch is still at double speed, unless I
divide by four instead of two next to the "resampling" comment. The
associated array is also only filled up to one half when synthesizing
the textbuffer, perhaps this gives a hint?

Oh and in the [pd properties] subpatch both the "pitch" and the "pitch
range" seem to be set with the same prefixed message?

Thanks/best, P

* IOhannes m zmölnig <zmoelnig at iem.at> [2021-03-13 23:06]:
> On 3/13/21 10:45 PM, Christof Ressi wrote:
> > > 
> > So the actual problem is that Pd can't find the 'espeak' library at
> > runtime. You obviously have it installed, at least gcc can find the
> > header files during compilation.
> 
> the *actual* problem is, that one (or more) symbol(s) that are supposed to
> be provided by the libespeak library cannot be resolved.
> there's no error indicating that any library cannot be found at runtime.
> 
> i just checked the project and after a successfull compilation, it seems
> that the espeak.pd_linux is not linked at all against the libespeak library.
> 
> this basically indicates a broken build system.
> whenever you happen to meet the author of the makefile, please deliver a
> good slapping from my side.
> 
> 
> what is going wrong here, is that modern linkers try aggressively to remove
> unneeded dependencies. and because libespeak is added to the linker when
> nothing yet uses any of its symbols, it is discarded.
> 
> putting the linker-flags to pull in the libraries after the object-files
> that require these libraries, fixes the problem:
> 
> 
> ```
> $ git diff Makefile
> diff --git a/Makefile b/Makefile
> index b3528b2..cd5b0ce 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -63,7 +63,7 @@ TARGETS=$(SOURCES:.c=.$(EXTENSION))
>  pd_linux: $(TARGETS)
> 
>  LINUXCFLAGS = -DPD -O2 -funroll-loops -fomit-frame-pointer -fPIC \
> -    -Wall -W -Wshadow -Wstrict-prototypes -Werror \
> +    -Wall -W -Wshadow -Wstrict-prototypes  \
>      -Wno-unused -Wno-parentheses -Wno-switch
> 
>  LINUXLDFLAGS =  -export-dynamic -shared  -lc -lm -lespeak
> @@ -71,7 +71,7 @@ LINUXLDFLAGS =  -export-dynamic -shared  -lc -lm -lespeak
>  LINUXINCLUDE =  -I$(PDSRCDIR)
> 
>  %.pd_linux: %.c
> -       $(CC) $(LINUXLDFLAGS) $(LINUXCFLAGS) $(LINUXINCLUDE) -o $*.pd_linux
> $*.c
> +       $(CC) $(LINUXCFLAGS) $(LINUXINCLUDE) -o $*.pd_linux $*.c
> $(LINUXLDFLAGS)
>         strip --strip-unneeded $*.pd_linux
> 
> 
> ```
> 




> _______________________________________________
> Pd-list at lists.iem.at mailing list
> UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list






More information about the Pd-list mailing list