Esta é uma pergunta para o código savy, que eu não sou ...
Eu estou tentando construir um conjunto de plug-ins antigos ladspa chamado ladosc (você pode encontrá-los em http://code.google.com/p/noisesmith-linux-audio/downloads/detail?name = ladosc.tar.bz2 & amp; can = 2 & amp; q="> google-code ) mas há erros nos quais não consigo encontrar uma solução alternativa.
O Makefile:
DESTINATION_DIR=~/.ladspa
LIBLO_STATIC=/usr/lib/liblo.a
install: install_op install_osc
install_op: op.so
mkdir -p ${DESTINATION_DIR}
cp op.so ${DESTINATION_DIR}/.ladspa
op.so: operator.o
ld operator.o -o op.so -shared
operator.o: operator.c
gcc -c operator.c
install_osc: osc.so
mkdir -p ${DESTINATION_DIR}
cp osc.so ${DESTINATION_DIR}/.ladspa
osc.so: osc.o ${LIBLO_STATIC}
ld osc.o ${LIBLO_STATIC} -o osc.so -shared
osc.o: lad-osc.c
gcc -c -g lad-osc.c -o osc.o
clean:
rm *.o *~ *.so
Não há script de configuração e, quando eu faço, o vinculador gera o seguinte erro:
ld: operator.o: relocation R_X86_64_32S against '.rodata' can not be used when making a shared object; recompile with -fPIC
operator.o: could not read symbols: Bad value
Quando eu adiciono sinalizadores -fPIC às chamadas do gcc no makefile, a compilação é executada de forma diferente e o vinculador dá o seguinte erro:
ld osc.o /usr/lib/liblo.a -o osc.so -shared
ld: /usr/lib/liblo.a(liblo_la-address.o): relocation R_X86_64_32 against '.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/lib/liblo.a: could not read symbols: Bad value
Eu não entendo isso. Isso significa que eu tenho que recompilar liblo? É tirado diretamente do repositório Ubunut.
Esses problemas já foram levantados por outras pessoas nas páginas do projeto no google code há cerca de 3 anos, mas o desenvolvedor não reagiu.
Eu já procurei por explicações e encontrei muitas coisas sobre código independente de posição e diferenças entre 32 e 64 bits, mas não entendi o suficiente para encontrar uma solução para o meu problema.
Alguém pode me ajudar a colocar esses plug-ins em funcionamento?
Felicidades,
Thomas