makefile编译so库

makefile编译so库

在anroid中,会看到很多原生的so库,so即shared library,用cc编译的时候,指定一下-shared的参数即可编译,怎么弄的呢,举个例子

so的生成

还是上一篇博客的程序

vim Makefile

all : encode.o 
    cc -shared -o libys.so encode.o

encode.o : encode.c encode.h
    cc -c encode.c

clean:
    rm -f *.o *.so

vim encode.h

void ysencode(char * buf,const char * base,const char * key,int type);

vim encode.c

#include 
#include 
#include 

void ysencode(char * buf,const char * base,const char * key,int type){
    strcpy (buf,base);
    strcat (buf,"|");
    strcat (buf,key);
    printf("%s\n",buf);
}

make && ls

so的使用(C)

在c里面调用so其实挺简单的,举个例子

vim test.c

#include 
#include 
#include 
#include "encode.h"

char* usage(){
    return "usage\n";
}

int main(int argc, const char * argv[]) {
    if(argc < 3){
        printf("%s\n",usage());
        return -1;
    }else{
        const char * base = *++argv;
        const char * key = *++argv;
        char str[strlen(base) + strlen(key) + 1];
        ysencode(str,base,key,1);
        printf("encode:%s\n",str);
        return 0;
    }
}

gcc -g -o test test.c -lys -L.

./test yeshen test

你可能感兴趣的:(C/C++)