编译 库链接实例(动态库 隐式显式)

代码结构:


main.c

#include <stdio.h>
#include "help.h"
int main()
{
  printf("%d\n", test(250));
  return 0;
}
main1.c

#include <stdio.h>
#include <dlfcn.h>

int main()
{
int ret = 1;
void *pHandle;
int (*pFunc)(int );

pHandle = dlopen("./cj.so", RTLD_NOW);
if (!pHandle)
{
printf("Cann't find cj.so\n");
return 1;
}
pFunc = (int (*) (int )) dlsym(pHandle, "test");
if(pFunc)
{
printf("result is %d\n",pFunc(250));

}
else
{
printf("Cann't find func test\n");
}
dlclose(pHandle);
return 0;
}
help.c

#include <stdio.h>
#include "help.h"
int test(int num){
return num*2;
}

help1.c

#include<stdio.h>
#include "help.h"
int test(int a)
{
return a*3;
}
help.h

#ifndef HELP_H
#define HELP_H

int test(int );

#endif


编译 链接:



使用 -I 指定main.c中使用到的头文件的路径(若和main.c在同一目录,可以不使用)

静态库的使用



-L 指定静态库路径


动态库 的 隐式链接:记得带路径链接动态库


无需再次链接,动态更换库


动态库的显示链接:

动态库流程


                                                




各方式对比:


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sholck222/article/details/78240940
文章标签: 编译链接 隐式库
个人分类: c语言
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭