免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1504 | 回复: 1
打印 上一主题 下一主题

[其他] Makefile 要怎么产生出 so [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-10-20 15:44 |显示全部楼层 |倒序浏览
本帖最后由 shihyu 于 2015-10-20 15:46 编辑

  1. #include <stdio.h>int p = 2;
  2. void print()
  3. {
  4.     printf("This is the first dll src!\n");
  5. }
复制代码

  1. #include <dlfcn.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>

  4. int main()
  5. {
  6.     void* pHandle;
  7.     void (*pFunc)();                                /* 指向函式的指標 */
  8.     int* p;

  9.     pHandle = dlopen("./dl.so", RTLD_NOW);         /* 開啟舊檔動態庫*/

  10.     if (!pHandle) {
  11.         printf("Cann't find dll.so\n");
  12.         exit(1);
  13.     }

  14.     *(void **)(&pFunc) = dlsym(pHandle, "print");   /* 獲取庫函式位址 */

  15.     if (pFunc) {        /* 獲取庫函式物件 成功,執行庫函式 */
  16.         pFunc();
  17.     } else {            /* 獲取庫函式物件 失敗,提示之 */
  18.         printf("Cann't find func print\n");
  19.     }

  20.     p = (int*) dlsym(pHandle, "p");             /* 獲取庫變數位址 */

  21.     if (p) {            /* 獲取庫變數成功,使用之 */
  22.         printf("p=%d\n", *p);
  23.     } else {            /* 獲取庫變數失敗,提示之 */
  24.         printf("Cann't find int p\n");
  25.     }

  26.     dlclose(pHandle);   /* 關閉動態庫 */

  27.     return 0;
  28. }
复制代码
gcc -O -fPIC -shared -o dl.so d1.c  && gcc -o tds tds.c -ldl



Makefile 要怎么产生出 dl.so  , 之后再 -ldl  成 tds  文件?

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
2 [报告]
发表于 2015-10-20 18:12 |显示全部楼层
  1. CC = gcc

  2. all: dl.so
  3.         $(CC) -o main tds.c -ldl
  4. dl.so:
  5.         $(CC) -O -fPIC -shared -o dl.so d1.c
  6.       
  7. .PHONY: clean
  8. clean:                             
  9.         @rm -rf *.o *.so main   
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP