免费注册 查看新帖 |

Chinaunix

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

[其他] 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  文件?

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
2 [报告]
发表于 2015-10-20 16:02 |只看该作者
本帖最后由 zsszss0000 于 2015-10-20 16:03 编辑
  1.    
  2. all:                                                                                                                                                                                               
  3.       gcc -o hello bb.c -ldl
  4. ld.so:
  5.       gcc -O -fPIC -shared -o dl.so aa.c
复制代码
试试这种写法看看是否可以 ?

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
3 [报告]
发表于 2015-10-20 16:12 |只看该作者
shihyu 发表于 2015-10-20 15:44
gcc -O -fPIC -shared -o dl.so d1.c  && gcc -o tds tds.c -ldl

$(HOME)/lib/libudrt.so:udrt.o
        $(CC) -shared -o$(HOME)/lib/libudrt.so udrt.o

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
4 [报告]
发表于 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