Bu, savy kod için bir soru, ben değilim ... Ben ladosc adlı bir dizi eski ladspa eklentileri oluşturmaya çalışıyorum (onları google kodunda bulabilirsiniz ) ama yapabileceğim hatalar var ' için bir geçici çözüm bulamadım.
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
Configure betiği yoktur ve yaptığım zaman, bağlayıcı aşağıdaki hatayı atar:
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
Makefile içindeki gcc çağrılarına -fPIC bayrakları eklediğimde build farklı çalışıyor ve linker şu hatayı veriyor:
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
Anlamadım bunu. Liblo'yu yeniden derlemem gerektiği anlamına mı geliyor? Doğrudan Ubunut depolarından alınır.
Bu sorunlar, yaklaşık 3 yıl önce proje sayfalarında google kodunda başka bir kişi tarafından gündeme getirildi, ancak geliştirici tepki vermedi.
Ben zaten açıklamalar aradım ve pozisyon bağımsız kodu ve 32bit ve 64bit arasındaki farklar hakkında birçok şey buldum ama sorunum için bir çözüm bulmak için yeterince anlamıyorum.
Birileri bu eklentileri çalıştırmam için bana yardım edebilir mi?
Şerefe, Thomas