怎样把.c文件编译成.so文件

怎样把.c文件编译成.so文件,第1张

.so是linux用漏橡的

所以 要生成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

表示生成成功。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/12207001.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存