关于Android源码中编译C模块的错误
2013-08-27 10:58
471 查看
一、系统环境
开发环境:ubuntu11.10
源码包:Android2.2
二、原工程(helloworld)
在Android2.2/development/hello/下创建文件hello.c和Android.mk
如上创建了文件,返回到android的根目录下,运行命令
三、排错
首先定位错误在【build/core/base_rules.mk:128: *** vendor/sec/sec_proprietary/smdkc100/keychars: MODULE.TARGET.KEYCHARS.s3c-keypad.kcm already defined by vendor/sec/sec_proprietary/smdkc110/keychars。 停止。】
在android源码包中的“vendor/sec/sec_proprietary/”路径下有文件夹“smdkc100/keychars/”和“smdkc110/keychars/”。并且在这个两个文件夹下都有“s3c-keypad.kcm”文件。
原因可能是没有选择编译目标。
如何选择编译目标呢?看到编译源码中有一个提示,抱着试试的心里做了:
四、运行测试
开机,连接usb数据线。拷贝helloworld到android的文件系统中:
在此感谢网友Jeffery ~~
开发环境:ubuntu11.10
源码包:Android2.2
二、原工程(helloworld)
在Android2.2/development/hello/下创建文件hello.c和Android.mk
//hello.c #include<stdio.h> int main() { printf("Hi,this is scan module interface...\n"); exit(0); }
##Android.mk LOCAL_PATH:=$(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := helloworld LOCAL_SRC_FILES := hello.c include $(BUILD_EXECUTABLE)
如上创建了文件,返回到android的根目录下,运行命令
make helloworld却出现如下错误:
lai@lai-ThinkPad-X61:~/af-t34$ . build/envsetup.sh including device/htc/dream/vendorsetup.sh including device/htc/passion/vendorsetup.sh including device/htc/sapphire/vendorsetup.sh lai@lai-ThinkPad-X61:~/af-t34$ make helloworld ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=2.2 TARGET_PRODUCT=generic TARGET_BUILD_VARIANT=eng TARGET_SIMULATOR= TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm HOST_ARCH=x86 HOST_OS=linux HOST_BUILD_TYPE=release BUILD_ID=FRF91 ============================================ build/core/copy_headers.mk:15: 警告:覆盖关于目标“out/target/product/generic/obj/include/libpv/SsbSipMfcApi.h”的命令 build/core/copy_headers.mk:15: 警告:忽略关于目标“out/target/product/generic/obj/include/libpv/SsbSipMfcApi.h”的旧命令 external/opencore/build_config/opencore_dynamic/Android_opencore_common.mk:104: external/opencore/codecs_v2/video/mfc_c100/dec/Android.mk: 没有那个文件或目录 external/opencore/build_config/opencore_dynamic/Android_opencore_common.mk:105: external/opencore/codecs_v2/video/mfc_c100/enc/Android.mk: 没有那个文件或目录 vendor/sec/sec_proprietary/smdkc110/keychars/Android.mk:28: 警告:覆盖关于目标“out/target/product/generic/system/usr/keylayout/qwerty.kl”的命令 sdk/emulator/keymaps/Android.mk:13: 警告:忽略关于目标“out/target/product/generic/system/usr/keylayout/qwerty.kl”的旧命令 vendor/sec/sec_proprietary/smdkc100/keychars/Android.mk:22: 警告:覆盖关于目标“out/target/product/generic/system/usr/keylayout/s3c-keypad.kl”的命令 vendor/sec/sec_proprietary/smdkc110/keychars/Android.mk:22: 警告:忽略关于目标“out/target/product/generic/system/usr/keylayout/s3c-keypad.kl”的旧命令 build/core/base_rules.mk:128: *** vendor/sec/sec_proprietary/smdkc100/keychars: MODULE.TARGET.KEYCHARS.s3c-keypad.kcm already defined by vendor/sec/sec_proprietary/smdkc110/keychars。 停止。 lai@lai-ThinkPad-X61:~/af-t34$
三、排错
首先定位错误在【build/core/base_rules.mk:128: *** vendor/sec/sec_proprietary/smdkc100/keychars: MODULE.TARGET.KEYCHARS.s3c-keypad.kcm already defined by vendor/sec/sec_proprietary/smdkc110/keychars。 停止。】
在android源码包中的“vendor/sec/sec_proprietary/”路径下有文件夹“smdkc100/keychars/”和“smdkc110/keychars/”。并且在这个两个文件夹下都有“s3c-keypad.kcm”文件。
原因可能是没有选择编译目标。
如何选择编译目标呢?看到编译源码中有一个提示,抱着试试的心里做了:
$ make helloworld PRODUCT-sec_smdkv210-eng ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=2.2 TARGET_PRODUCT=sec_smdkv210 TARGET_BUILD_VARIANT=eng TARGET_SIMULATOR= TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm HOST_ARCH=x86 HOST_OS=linux HOST_BUILD_TYPE=release BUILD_ID=FRF91 ============================================结果还真成了,out/target/product/smdkv210/system/bin/文件夹中找到了helloworld的二进制文件。
四、运行测试
开机,连接usb数据线。拷贝helloworld到android的文件系统中:
adb push helloworld /data/然后到terminal中运行里
# ./helloworld Hi,this is scan module interface...
在此感谢网友Jeffery ~~
相关文章推荐
- 关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(2)
- 关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(1)
- 关于make/编译android源码中的Launcher2出现错误/error41
- Android 关于图片文件夹后缀错误,使应用在源码下编译通过却无法运行的错误
- Android源码编译make的错误处理
- 在android源码编译自己的模块
- 关于在android源码编译时引用第三方jar宝--需要在android.mk中配置
- [Android环境搭建错误解决三]Android4.0.4源码编译常见错误及解决方法
- Android源码编译常见错误
- 【Android】源码编译 时常见错误
- 编译Android源码 解决:[out/host/linux-x86/obj/SHARED_LIBRARIES/libclearsilver-jni_intermediates/j_neo_util.o] 错误 1
- Android源码编译指定模块的三种方法
- 编译android5.1 源码 遇到错误undefined reference to 'register_android_system_OsConstants(_JNIEnv*)'
- 关于android源码中的APP编译时引用隐藏的API出现的问题
- 【转】Android 源码编译make的错误处理--不错
- android 编译STL模块相关错误解决
- android源码使用proguard混淆编译及错误总结
- wandboard android 4.4.2源码编译错误
- 在Mac OS 10.12 编译Android源码:错误小结
- shell编译android源码 "(" unexpected 错误