Linux gcc编译库,Mac/Linux下gcc编译动态链接库[.so文件]

一、以bsdiff.c和bspatch.c为例编译bsdiff.so

bsdiff.c和bspatch.c分别依赖bzip2

项目结构

步骤使用BsDiff.java生成BsDiff.class文件

javac ivonhoe/spring/wrcenter/jni/BsDiff.java

生成BsDiff.h文件

javah ivonhoe.spring.wrcenter.jni.BsDiff

生成bspatch.o

gcc -fPIC -D_REENTRANT -IJAVA_INCLUDE1 -I/JAVA_INCLUDE2/ -I/Users/Ivonhoe/Downloads/VelocityDemo/src/main/java/jni/bzip2 -I/Users/Ivonhoe/Downloads/VelocityDemo/src/main/java/jni -c ./jni/bspatch.c

生成bsdiff.o

gcc -fPIC -D_REENTRANT -I/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/include/darwin -I/Users/Ivonhoe/Downloads/VelocityDemo/src/main/java/jni/bzip2 -I/Users/Ivonhoe/Downloads/VelocityDemo/src/main/java/jni -c ./jni/bsdiff.c

将bzip2下的c文件生成相应的.o文件

gcc -fPIC -D_REENTRANT -I/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/include/darwin -I/Users/Ivonhoe/Downloads/VelocityDemo/src/main/java/jni/bzip2 -c ./jni/bzip2/*.c

生成so文件

gcc *.o -o bsdiff.so -shared -v

注:

JAVA_INCLUDE1:/usr/local/java/jdk1.7.0_40/include

JAVA_INCLUDE2:/usr/local/java/jdk1.7.0_40/include/linux

是 jdk 中的 jni.h 文件的所在目录,这两个目录需要大家替换为自己的对应路径

BZIP2_INCLUDE:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值