请帮助在 64 位 raring 上构建 ladosc

请帮助在 64 位 raring 上构建 ladosc

这个问题是针对代码达人提出的,而我并不是。。。我正在尝试构建一组名为 ladosc 的老式 ladspa 插件(你可以在google 代码),但存在一些我找不到解决方法的错误。

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

当我在 makefile 中的 gcc 调用中添加 -fPIC 标志时,构建运行方式有所不同,并且链接器出现以下错误:

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?它是直接从 Ubunut 存储库中获取的。

大约 3 年前,其他人已经在 google code 的项目页面上提出了这些问题,但开发人员没有做出反应。

我已经搜索了解释并发现了很多有关位置独立代码以及 32 位和 64 位之间差异的内容,但我了解得还不够多,无法找到解决我的问题的方法。

有人能帮助我启动并运行这些插件吗?

欢呼吧,托马斯

答案1

我联系了开发人员,他帮助我编译了它。

我必须在 makefile 中用 (.so 是一个共享库而 .a 不是) 替换并使用liblo.agcc的标志进行编译。liblo.so-fPIC

现在插件已经编译完毕。目前还不能测试它们的功能,但它们可以在 Ardour 中正常打开。

相关内容