编译生成so
❶ 怎样把.c文件编译成.so文件
.so是linux用的
所以 要生成so 需要用gcc
和生成可执行文件类似,只是增加一些编译选项
命令如下
gcc SOURCE_FILES -fPIC -shared -o TARGET
SOURCE_FILES可以是.c文件,也可以是经过-c编译出来的.o文件
TARGET为so文件。
❷ linux中把.c的文件编译成.so
首先
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
❸ 如何把java工程 编译成.SO文件
1,写一个java文件,声明一个native 方法,例如public native void test(); 2,把它编译成class文件 3,使用javah 这个class来生成cpp的头文件 4,实现头文件里面那些函数 4,用ndk编译生成动态库 其中1,想生成几个就写几个native方法。
❹ 如何在Eclipse中如何用cygwin把C文件编译成so文件
用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
表示生成成功。
❺ 怎样把.c文件编译成.so文件
比如有一个test.c文件,我想打包成动态库test.so,
直接gcc
test.c
-o
test.o
-fpic
gcc
-o
test.so
test.o
-shared
使用的时候发布.so和头文件即可。
链接的时候要记得丢在默认目录或者将其所在目录声明到环境变量,不然有时候会提示找不到这个库文件。
❻ 多个.c文件能编译成单个.so文件吗
可以的
一般是把多个.c文件 先分别编译成.o文件
然后再把.o文件打包成.so
也可以直接编译打包,一步完成。
命令如下
gcc SOURCE_FILES -fPIC -shared -o TARGET
SOURCE_FILES可以是.c文件,也可以是经过-c编译出来的.o文件
TARGET为so文件。
比如
gcc a.c b.c c.c d.c -fPIC -shared -o libabcd.so
❼ 怎么编译生成指定模块的so库文件
android NDK编译多个so文件
android编译系统的makefile文件Android.mk写法如下
(1)Android.mk文件首先需要指定LOCAL_PATH变量,用于查找源文件。由于一般情况下
Android.mk和需要编译的源文件在同一目录下,所以定义成如下形式:
LOCAL_PATH:=$(call my-dir)
上面的语句的意思是将LOCAL_PATH变量定义成本文件所在目录路径。
(2)Android.mk中可以定义多个编译模块,每个编译模块都是以include $(CLEAR_VARS)开始
❽ ndk编译生成so
本文讲述使用Android 的ndk-build来编译生成so库,在命令行中编译。编译后的so库可以调用。
环境问题略过,请自行网络或谷歌安装ndk。
新建文件夹/cn/scnu
并在文件夹中创建java 文件:
该命令会编译java文件并在build目录下生成,然后我们打开build目录
然后我们使用javah命令:
然后会生成一个.h头文件,我们打开这个头文件看看:
可以看到这里面只有一个函数,这个函数返回一个整形,和前面的java头文件对应。
接下来我们另外创建一个Test文件夹,在Test文件夹下创建jni目录,然后将刚才生成的头文件拷贝进来。
然后我们创建JNITest.c文件,文件内容如图:
这个文件的主要内容就是调用头文件并实现头文件中的方法,我们返回了1024。
LOCAL_MODULE 就是我们要生成的so,LOCAL_SRC_FILES就是编译的文件
这里就表示我们要生成的so库的CPU架构。
使用命令行进入到Test目录下,即jni的根目录处,然后打命令:
结果如图,然后我们就可以在libs目录下发现生成的so库了。