
所以 要生成so 需要用gcc
和生成可执行文件类似,只是增返耐旁加一些编译亩塌选项
命令如下
gcc SOURCE_FILES -fPIC -shared -o TARGET
SOURCE_FILES可以是.c文件,也可以是经过-c编译出来的.o文件
TARGET为so文件。
就跟用VS编译dll或者lib文件差不多,把代码编译完成以后,陵锋命名为相应的后缀就好了。例如:
gcc -c -fPIC libst.c
生成 libst.o
然后
gcc -shared -fPIC -o libst.so libst.o
生成 libst.so 动态链接库
把libst.so拷贝到系统默认库目录下,比如 /lib, /usr/lib 下
假定有 test.c 要引用这个库
gcc -lst -o test test.c
然尺毁晌后就可以了
假如不能把libst.so拷贝到默认库目录下,比方余山说放在了
/home/aaa/lib 下
那么就用这样的语句来编译test.c
gcc -L/home/aaa/lib -lst -Wl,-rpath=/home/aaa/lib -o test test.c
用cygwin把C文件毕坦编译成so文件:
1:首先,要准备好一个jni文手好桐件夹,里面包含三个文袜碰件:
makefile文件:
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:=test-jni
LOCAL_SRC_FILES := test-jni.c
include $(BUILD_SHARED_LIBRARY)
如果有多个文件,可能有所不同吧,尚未尝试。
头文件:最好使用javah命令来生成,可见我的上一篇文章;
源文件:根据头文件,完善源码。
2:将jni文件夹拷贝到Android项目目录下
3:运行cygwin,使用CD命令,切换目录到Android项目目录
4:输入命令 $NDK/ndk-build,屏幕显示如下:
$ $NDK/ndk-build
Cygwin : Generating dependency file converter script
Compile thumb : test-jni <= test-jni.c
SharedLibrary : libtest-jni.so
Install : libtest-jni.so =>libs/armeabi/libtest-jni.so
表示生成成功。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)