1. C/C++源文件直接交叉编译生成.so文件供安卓应用程序调用,可以吗
Jni调用就行了,是要按规则写接口api,如果接口很多,也没法,那是你的业务问题,要重新设计业务逻辑。我们之前用的c++单独交叉编译一个进程,和安卓界面用tcp通信,如果接口多也以为着协议多,一样的。
2. 但是生成了libxxx.so文件,这个动态库不能被别人调用吗
可以被别人使用啊。你只需要在编译的时候,链接这个动态库就能被使用了。
3. 编译出来的so库文件怎么在JAVA中调用
用 sudo find / -name jni.h -print
命令,就会打出路径
4. linux下如何用c++编译so文件,c语言又怎样调用这个so文件
根据相应的头文件、和链接使用的库文件,编译链接后,即是可以使用该.so文件了
~~~~~~~
5. ndk编译so库能调用linux下编译出的arm静态库吗
先区分清楚host和target的区别。 Linux和Windows是你的host platform。 Android是target platform。 编译Android library使用cross-compilation (交叉编译),即在某个host平台下编译针对某个特定的target平台的体系结构的代码。
6. linux下c语言编译so问题
不需要在自己的.so中调用别人的.so,只需要编译自己的,编译.so时,系统不会检查未定义的函数。
直接在编译自己的应用程序时链接这两个.so就可以了!
gcc
-o
exec_file
mysrc.c
-L./
-lXXX
-L/usr/lib
-lmysqlclient
7. 添加.so文件后,还是不能使用怎么办
个目录。安全的做法是编译库C代码时,Application.mk中打开,
APP_ABI := armeabi armeabi-v7a
编译生成的两份so文件各自放到项目工程的armeabi/armeabi-v7a目录中。有时还需要针对v7a平台编译支持NEON和不支持NEON的库。譬如这个例子,
in armeabi/: libp.so, libd.so, libvh.so, libvn.so
in armeabi-v7a/: libp.so, libd.so, libd_neon.so, libvh.so, libvn.so
需要注意这一点:The 'armeabi-v7a' machine code will not run on ARMv5 or ARMv6 based devices. 如果损失一些应用的性能是可以接受的,不希望保留库的两份拷贝,可以移除armeabi-v7a目录和其下的库文件,只保留armeabi目录。在安装应用时,行为是这样的,
When installing an application, the package manager service will scan
8. linux驱动能不能编译成so,供应用程序使用
不能。
最终应用程序使用的是一个设备文件,而要产生这个设备文件,那么是编译进内核里,要么是编成模块的ko文件,生成了设备文件,在dev目录下能看到这个设备文件才可供应用程序调用。
希望我的回答能帮助到你。