环境:Linux,CentOS7
目标:将排序算法源码sort.c编译为.so库文件,在main.c代码中可以直接调用
步骤:
gcc -o libsort.so -fPIC -shared sort.c
产生libsort.so库export LD_LIBRARY_PATH=$(pwd)
将当前目录设为gcc搜索.so库的路径,否则是找不到这个.so库gcc -o main main.c -lsort -L.
编译,-L. 表示.so库在当前目录下,-lsort表示调用libsort.so库(链接进可执行程序的调用方法)
注:sort.c、libsort.so、-lsort三者关系类似于
xxx.c、libxxx.so、-lxxx
源码:
sort.c
void InsertSort(int* a,int len)
{
int begin = 1;
int i = 0;
while(begin < len)
{
int key = a[begin];
for(i = begin-1;i>=0;i--)
{
if(a[i]<=key)
{
a[i+1] = key;
break;
}
a[i+1] = a[i];
}
if(i<0)
a[0] = key;
begin++;
}
}
main.c
#include <stdio.h>
int main()
{
int i = 0;
int test[]={1,3,5,7,2,4,6,8};
InsertSort(test,8);
for(i=0;i<8;i++)
{
printf("%d,",test[i]);
}
printf("\n");
return 0;
}