Это вопрос для кода, который я не использую ... Я пытаюсь создать набор старых плагинов ladspa под названием ladosc (их можно найти в google-code . ]) но есть ошибки, для которых я не могу найти обходной путь.
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
Нет сценария конфигурации, и когда я делаю, компоновщик выдает следующую ошибку:
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
Когда я добавляю флаги -fPIC в gcc вызовы в make-файле сборка выполняется по-другому, и компоновщик выдает следующую ошибку:
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
Я не понимаю этого. Значит ли это, что я должен перекомпилировать liblo? Он взят прямо из репозитория Убунута.
Эти проблемы были подняты кем-то еще на страницах проекта в коде Google около 3 лет назад, но разработчик не отреагировал.
Я уже искал объяснения и нашел много материала о позиционно-независимом коде и различиях между 32-битным и 64-битным, но я не понимаю достаточно, чтобы найти решение для моей проблемы.
Кто-нибудь может мне помочь запустить эти плагины?
Приветствия, Томас
Я связался с разработчиком, и он помог мне скомпилировать его.
Мне пришлось заменить liblo.a
на liblo.so
(.so - это общая библиотека, а .a - нет) в make-файле и скомпилировать с -fPIC
флагами для gcc.
Теперь плагины компилируются. Пока что не могу их функционально протестировать, но они хорошо открываются в Ардоре.