android mk编译错误

来源:互联网 发布:java中的静态变量 编辑:程序博客网 时间:2024/06/10 04:31


错误显示:
/home/lsp/workspace/xxx.cpp:104: undefined reference to `nutshell::NMBtDispatcher::NMBtDispatcher(nutshell::NMBtCallback*)'
/home/lsp/workspace/xxx.cpp:105: undefined reference to `nutshell::NMBtDispatcher::init()'
collect2: ld returned 1 exit status
make: *** [out/target/product/obj/EXECUTABLES/aaa_intermediates/LINKED/aaa] Error 1



/home/lsp/workspace/prebuilt/toolchains/arm-fsl-linux-gnueabi/4.6.2/bin/../lib/gcc/arm-fsl-linux-gnueabi/4.6.2/../../../../arm-fsl-linux-gnueabi/bin/ld: cannot find -ldispatcher.so
collect2: ld returned 1 exit status
make: *** [out/target/product/obj/EXECUTABLES/aaa_intermediates/LINKED/aaa] Error 1




造成上面错误一个简单的原因是因为缺库或路径,查看.cpp所包含的库和路径后,觉得没问题的话,


下面要检查的就是.cpp文件编译出来的MODELE名。下面解释下LOCAL_MODULE:



LOCAL_MODULE用来给每一个模块定义一个名字,这里的名字会传给NDK编译系统,然后加上lib前缀和.so后缀(例如:变成libhello.so);


但是如果你在定义的过程中,自己加上了lib前缀,则NDK在处理时就不会在加上lib前缀了(这样做是为了兼容Android系统的一些源码)。


那么问题来了,查看你的模块名字是不是没有加lib前缀,如果没有加的话,在NDK编译系统的话会自动加上,而你在其他地方用的时候,


用的是没有加上lib前缀的库,造成库找不到的错误。加上lib前缀在试试,如果再不行,就不知道了。




参考链接:http://blog.csdn.net/smfwuxiao/article/details/8530742
0 0
原创粉丝点击