原材料:
test_dynamic.c
#include <stdio.h>
void func1(void)
{
printf("func1 in test.dynamic\n");
}
int func2(int a, int b)
{
printf("func2 in test.dynamic\n");
return a + b;
}
test_dynamic.h
void func1(void);
int func2(int a, int b);
Makefile
all:
gcc test_dynamic.c -o hjl.o -c -fPIC
gcc hjl.o -o libhjl.so -shared
linux加工成动态链接库 libhjl.so:
使用动态链接库
材料:
test_dynamic.h libhjl.so test.c
test_dynamic.h
#include <stdio.h>
#include "test_dynamic.h"
test.c
int main (void)
{
func1();
int b = func2(3,5);
printf("in main b=%d\n",b);
return 0;
}
通过命令生成hhh
但动态链接生成的文件不能像静态链接那样直接运行.要运行必须把libhjl.so 放到/usr/lib中,因为libhjl.so不是系统默认的库,所以不建议直接放到系统的库目录下,这里用环境变量解决
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/hgfs/zyp_code/4/4.6.12/test