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一下!问题搞定!

时间: 2024-08-10 14:58:12

10.24工作笔记——解决linux_jni编译报错问题的相关文章

解决RegexKitLite编译报错

在编译RegexKitLite的时候,报错如下: Undefined symbols for architecture i386: "_uregex_open", referenced from: _rkl_getCachedRegex in RegexKitLite.o "_uregex_groupCount", referenced from: _rkl_getCachedRegex in RegexKitLite.o "_uregex_setText

org.eclipse.wst.common.project.facet.core.xml文件模板,解决eclipse编译报错。

<?xml version="1.0" encoding="UTF-8"?> <faceted-project> <fixed facet="wst.jsdt.web"/> <fixed facet="jst.web"/> <fixed facet="java"/> <installed facet="jst.web" v

解决php编译报错configure: error: mcrypt.h not found. Please reinstall libmcrypt.

yum install -y epel-releaseyum install -y libmcrypt-devel 原文地址:https://www.cnblogs.com/finnlee/p/8992374.html

jack编译报错的问题

最近公司开发人员频繁jack的问题,我这边总结一下: 一. 第一种情况是服务器多人编译而产生的jack端口冲突的原因!报错提示如下: No Jack server running. Try 'jack-admin start-server' No Jack server running. Try 'jack-admin start-server 解决方法,首先第一步: 执行命令:cat ~/.jack-server/config.properties|grep -i port && cat

qt5.5.1 苹果电脑10.12.2 编译报错&#39;cstddef&#39; file not found

问题: qt5.5.1   苹果电脑10.12.2  编译报错: /Users/apple/Qt5.5.1/5.5/clang_64/lib/QtCore.framework/Headers/qglobal.h:39: error: 'cstddef' file not found 解决办法: 打开Pro文件, 添加一条 QMAKE_MAC_SDK=macosx10.12 意思就是设置编译SDK 和苹果系统一样. qt5.5.1 苹果电脑10.12.2 编译报错'cstddef' file no

Android Studio导入Fresco项目编译报错unable to expand TAR &#39;imagepipeline\build\downloads\libjpeg-turbo-1.3.1.tar.gz&#39;解决

把github上的一个Fresco的demo源码clone到本地(附clone地址:https://github.com/facebook/fresco.git),导入这个fresco项目编译报了如题所示的错.经过网上搜索解决方案,只找到了下面链接给的解决方案: unable to expand TAR 'imagepipeline\build\downloads\libjpeg-turbo-1.3.1.tar.gz解决 按照上面链接给的方法试了一下,结果无法解决.还是报同样的错误.然后我试着去

Windows 10 上安装 3D Studio Max 2016 报错的解决办法

在 Windows 10 上安装 3D Stuido Max 2016 报错,无法正常安装,查看日志是 VC 运行时安装错误,经过分析发现在 Windows 10 上已经有这些运行时并且版本比安装包中自带的还要高,所以安装总是失败,分析安装程序配套的 setup.ini 文件,发现里面有运行时安装的配置信息,并且可以忽略错误,因此修改 setup.ini 文件,然后就可以顺利进行安装了,修改后的 setup.ini 文件如所示 #============= VCREDIST Begin ====

iOS 用CocoaPods做iOS程序的依赖管理(基于Alcatraz),以及升级Mac 10.11后Xcode的CocoaPods插件报错

创建Podfile文件 1.点击红框, Creat Podfile 2.接着弹出Podfile文件 3.Edit Profile, 下面以添加融云SDK为例: 融云SDK Podfile文件添加如下内容: Podfile Edited 1 也可以这样编辑: 屏幕快照 2015-10-27 上午9.04.47.png "7.0"表示引入的第三方库所支持的最低版本 target "CocoaPodsDemo"是你的目标应用项目 do ... end 是你的作用域 Ins

解决mysqldump备份报错: Couldn&#39;t execute &#39;SHOW FIELDS FROM Unknown error 1356

服务器环境: [[email protected] mysql]# cat /etc/redhat-releaseCentOS Linux release 7.3.1611 (Core) [[email protected] mysql]# uname -aLinux localhost.localdomain 3.10.0-514.21.1.el7.x86_64 #1 SMP Thu May 25 17:04:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux