首页 > 代码库 > 10.24工作笔记——解决linux_jni编译报错问题
10.24工作笔记——解决linux_jni编译报错问题
公司在用opus开源库,所以遇到了一些问题。
我将新下载的opus1.1替换掉老版本之后,单独编译opus没问题,可是编译相关的文件就会报错。
错误信息如下:
g++ -Wall -fPIC -shared libusc_jni.o libusc.a ../api/libopus.a ../api/libspeex.a ../api/libamrnb.a ../api/libpcre.a -o libusc_jni.so -L. -lusc /usr/bin/ld: ../api/libopus.a(celt.o): relocation R_X86_64_32S against `.rodata‘ can not be used when making a shared object; recompile with -fPIC ../api/libopus.a: could not read symbols: Bad value collect2: ld 返回 1 make: *** [libusc_jni.so] 错误 1
好奇怪啊!搞了半天,发现是opus的问题!!我还以为是别的文件的问题!百度原因,是因为Makefile文件没有兼容64导致的,可是Makefile是通过configure自动生成的啊!看了configure源码,发现系统位数是自动检测的。并没有什么参数可以进行传递,所以只得手动修改了Makefile。找到 CFLAGS 所在的那一行,然后在末尾加上 :
-fPIC重新编译,make之前记得make clean一下!问题搞定!
10.24工作笔记——解决linux_jni编译报错问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。