Chinaunix

标题: Makefile 要怎么产生出 so [打印本页]

作者: shihyu    时间: 2015-10-20 15:44
标题: Makefile 要怎么产生出 so
本帖最后由 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  文件?
作者: zsszss0000    时间: 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
复制代码
试试这种写法看看是否可以 ?
作者: yulihua49    时间: 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

作者: shihyu    时间: 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   
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2