Android Native中Android.mk编译链接时命名冲突的问题
来源:互联网 发布:向数据库中添加数据 编辑:程序博客网 时间:2024/06/16 05:05
今天在移植一个Linux C程序到 Android 源码层时遇到一个问题,记录下来已备其他遇到此类问题的朋友查阅:
问题的提示很明显,就是在链接的时候发现有俩个.o文件中都生成了"mp_mul_2"这个函数名,导致了命名冲突。
但是我查阅了所有代码和库,只发现了一个声明mp_mul_2a的地方,即bnn_mp_mul_2.c中, 并且相同内容的makefile在Linux中编译时并没有报这个错误。
后来仔细的看看了连接错误,发现应该是bnn_mp_mul_2.c中的mp_mul_2函数和bnn_mp_mul_2.c中的mp_mul_2冲突了!
神奇吧,同一个文件中的同一个函数发生了冲突!!!
原来是原makefile中写了2次bn_mp_mul_2.c, 即:
/home/***/android4.2/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: error: out/target/product/***/bn_mp_mul_2.o: multiple definition of 'mp_mul_2'/home/***/android4.2/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: out/target/product/***/bnn_mp_mul_2.o: previous definition here
问题的提示很明显,就是在链接的时候发现有俩个.o文件中都生成了"mp_mul_2"这个函数名,导致了命名冲突。
但是我查阅了所有代码和库,只发现了一个声明mp_mul_2a的地方,即bnn_mp_mul_2.c中, 并且相同内容的makefile在Linux中编译时并没有报这个错误。
后来仔细的看看了连接错误,发现应该是bnn_mp_mul_2.c中的mp_mul_2函数和bnn_mp_mul_2.c中的mp_mul_2冲突了!
神奇吧,同一个文件中的同一个函数发生了冲突!!!
原来是原makefile中写了2次bn_mp_mul_2.c, 即:
...CoreUtils_SRCS += bn_mp_mul_2.cCoreUtils_SRCS += bn_mp_mul_2.c...对应到Android.mk中就是
...$(SUPPORT_DIR)/bn_mp_mul_2.c \$(SUPPORT_DIR)/bn_mp_mul_2.c \...这种方式使用GNU C编译器时没问题, 使用bionic C编译器时就报错了, 删除掉一行即可!
0 0
- Android Native中Android.mk编译链接时命名冲突的问题
- android.mk混淆编译proguard的问题
- Android.mk的问题
- 关于Android.mk中PREBUILT的问题
- android.mk文件的编译
- Android.mk 与AIDL 编译问题
- Android.mk 与AIDL 编译问题
- android R文件命名冲突问题
- 编译不同类型Android程序时,Android.mk文件的定义
- android jni编译时Android.mk文件的规范说明
- 编译android 的srtp android.mk
- Android.mk--编译Android的模块
- android JNI 编译时Android.mk含义
- Android Application.mk和Android.mk 同在应用程序里的jni目录时交叉编译步骤
- 包含cpp文件链接opencv源码编译以及neon加速的Android.mk
- Android.mk编译apk
- Android.mk编译控制
- android mk编译错误
- Web-Scale IT 我之见!
- 设置VS助手函数说明注释
- iOS---设置导航条文字
- hdu 3038 How Many Answers Are Wrong
- redis操作
- Android Native中Android.mk编译链接时命名冲突的问题
- Sphinx的配置文件注释 window 原创
- 消息 266,级别 16,状态 2,过程 UserExchange,第 0 行 EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 0,当前计数 = 1。
- 鼠标hover 加样式,并且当前active样式消失
- 聚类算法-Hierarchical(MIN)-C++
- 将信息保存/取出配置文件信息
- 利用 LeakCanary 来检查 Android 内存泄漏
- linux一些配置参数
- JAVA 通过freemarker 生成Word 带图片格式