android error: undefined reference to 的错误分析
今天,简单讲讲android
error: undefined reference to 的错误分析。
昨天,做jni,连接so库时,android studio出现了这个问题。当时不知道是什么原因,后来,查找资料,总算解决了。这里记录一下。
一般编译器报 “undefined reference to”的错误是以下几种情况,Android中的makefile是Android.mk命名的。
1 没有指定对应的库(.o/.a/.so)
使用了库中定义的实体,但没有指定库(-lXXX)或者没有指定库路径(-LYYY),会导致该错误,
在Android.mk中 用LDFLAGS参数来定义库(-lXXX)和 (-LYYY)的
2 连接库参数的顺序不对
在默认情况下,对于-l 使用库的要求是越是基础的库越要写在后面,无论是静态还动态
我在实际使用的过程中,发现-D参数的使用,也会导致“undefined reference to”的错误,推荐大家如果想在做宏控制的时候,把-D参数放到最后
3 gcc/ld 版本不匹配
gcc/ld的版本的兼容性问题,由于gcc2 到 gcc3大版本的兼容性存在问题(其实gcc3.2到3.4也一定程度上存在这样的问题) 当在高版本机器上使用低版本的机器就会导致这样的错误, 这个问题比较常见在32位的环境上, 另外就在32位环境不小心使用了64位的库或者反过来64位环境使用了32位的库.
这个问题与Linux下几乎一样
4 C/C++相互依赖和链接
gcc和g++编译结果的混用需要保证能够extern "C" 两边都可以使用的接口,在我们的64位环境中gcc链接g++的库还需要加上 -lstdc++,具体见前文对于混合编译的说明 。
在extern “C”的使用时候,因为我经常需要用JNI链接纯C语言的库,我有时候加上extern "C" 还是不行,后来我才发现,extern "C" 必须要包含了头文件,我在这个问题上纠结了很久,惭愧。
5 运行期报错
这个问题基本上是由于程序使用了dlopen方式载入.so, 但.so没有把所有需要的库都链接上,具体参加上文中对于静态库和动态库混合使用的说明
关于执行时动态链接的问题,我也碰到过很纠结的情况,就是在Android链接的库依赖于我现在当前的库,就变成了你链接我,我再链接你,导致死都编不过,最好撇清这种关系
我的问题就是依赖库的顺序不对,导致出现error: undefined reference to 。后来修改了依赖的顺序,问题就解决了。这里,只需注意最基本的so库依赖在最前面,其他不依赖其他so的库依赖在后面。
android error: undefined reference to 的错误分析就讲完了。
就这么简单。
android error: undefined reference to 的错误分析相关推荐
- 【错误记录】Android NDK 错误排查记录 ( error: undefined reference to | Linking CXX shared library FAILED )
文章目录 一. 报错信息 二. 错误分析 三. 错误总结 一. 报错信息 报错信息 : Build command failed. Error while executing process Y:\0 ...
- Android系统编译so库提示error undefined reference to '__android_log_print问题的解决
在系统源代码的hardware/qcom下增加psam文件夹,编译源代码要生成libpsam.so库,Android.mk内容 LOCAL_PATH := $(call my-dir) include ...
- error: undefined reference to ‘typeinfo for android::RefBase‘ hidl_death_recipient
HIDL设置死亡通知时出现错误: typeinfo for android::hardware::hidl_death_recipient: error: undefined reference to ...
- error undefined reference to __android_log_print
error undefined reference to '__android_log_print 配置 Android.mk文件 输入 LOCAL_LDLIBS := -llog 打印日志库 注意: ...
- 解决Error: undefined reference to `__android_log_print'
解决Error: undefined reference to `__android_log_print' 最近在使用Android Studio进行NDK开发时,程序本身是没有问题,但一旦添 ...
- jni/../../Classes/AppDelegate.cpp:29: error: undefined reference to 'StartLayer。而且没生成libgame.so文件...
分类:cocos2d-x环境搭建常见问题2014-01-23 15:05304人阅读评论(0)收藏举报 <1>报错. G:/AndroidCocos2dxFile/android-ndk- ...
- 【Qt】error: undefined reference to `vtable for MainWindow‘
1.问题描述 在写一个demo时,想尽量简单,就把MainWindow类的定义和实现都写在main.cpp中,结果编译时报错: main.cpp:-1: error: undefined refere ...
- 【Qt】报错error: undefined reference to `vtable for的解决方法
1.问题描述 编译Qt程序时,在某个类构造函数定义处报错: error: undefined reference to `vtable for 2.原因分析 导致错误信息的原因是:子类没有实现父类的纯 ...
- 【ffmpeg】编译时报错:error: undefined reference to `av...
1.问题描述 昨天使用ffmpeg库编译demo一切正常,今天再次链接ffmpeg库时报了一堆错误: error: undefined reference to `av_frame_alloc()' ...
最新文章
- 《巴伦周刊》:纳德拉带领微软中兴
- Java中的Atomic包
- jQuery ajax 和 普通js ajax 笔记
- qt中tinyxml2的基本使用方法
- 百度云域名解析如何添加? - [未完待续]
- Go中error类型的nil值和nil
- 4.1 软件开发生命周期模型
- varnish02 代理多台后端服务器
- SDL如何嵌入到QT中?!
- xml property标签注入一个类变量_依赖注入的学习
- OAuth2通过token访问资源服务器
- 答疑解惑:软件定义存储常见问题
- Android JTT 808-2011 道路运输车辆卫星定位系统终端通讯协议及数据格式
- Swagger与其他API文档编写工具对比
- JSON 是什么?JSON 介绍
- cos和sin的使用
- 消防管件做的机器人图片_消防管道配件制成机器人
- Golang-RSA加密解密-数据无大小限制(gophp)
- SpringCloud组件:Ribbon的负载均衡策略及原理
- 【计算机视觉】图像分割与特征提取——基于Roberts、Prewitt、Sobel算子的图像分割实验