博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
10.24的注意事项——解决linux_jni编译错误的问题
阅读量:6371 次
发布时间:2019-06-23

本文共 723 字,大约阅读时间需要 2 分钟。

        公司以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 valuecollect2: ld 返回 1make: *** [libusc_jni.so] 错误 1
好奇怪啊!搞了半天,发现是opus的问题!

。我还以为是别的文件的问题!

百度原因,是由于Makefile文件没有兼容64导致的,但是Makefile是通过configure自己主动生成的啊。看了configure源代码,发现系统位数是自己主动检測的。并没有什么參数能够进行传递,所以仅仅得手动改动了Makefile。找到 CFLAGS 所在的那一行,然后在末尾加上 :

-fPIC
又一次编译,make之前记得make clean一下!问题搞定!

版权声明:本文博主原创文章,博客,未经同意不得转载。

你可能感兴趣的文章
Selector.wakeup实现注记
查看>>
《Java EE 7精粹》—— 第1章 Java EE 1.1 简介
查看>>
《Exchange Server 2013 SP1管理实践》——导读
查看>>
syslog:类Unix系统常用的log服务
查看>>
使用Annotation设计持久层
查看>>
深入实践Spring Boot2.4.1 Neo4j依赖配置
查看>>
Zen Cart 如何添加地址栏上的小图标
查看>>
SecureCrt 连接Redhat linux
查看>>
[NHibernate]持久化类(Persistent Classes)
查看>>
如何在Hive中使用Json格式数据
查看>>
linux如何恢复被删除的热文件
查看>>
Eclipse(MyEclipse) 自动补全
查看>>
Struts2中dispatcher与redirect的区别
查看>>
zabbix agentd configure
查看>>
地图点聚合优化方案
查看>>
Google Chrome 快捷方式
查看>>
备考PMP心得体会
查看>>
vue proxy匹配规则
查看>>
线上应用故障排查之一:高CPU占用
查看>>
Extend Volume 操作 - 每天5分钟玩转 OpenStack(56)
查看>>