C语言库函数---linuxC---Makefile

CC = gcc -g -Wall -shared -fPIC -lcrypto -rdynamic -lhikos_common

all:
@$(CC) libhikos_ceph.c -o libhikos_ceph.so
@cp libhikos_ceph.so /home/hikos/system/lib64/
@chmod 777 /home/hikos/system/lib64/libhikos_ceph.so
@rm -f /lib64/libhikos_ceph.so
@ln -s /home/hikos/system/lib64/libhikos_ceph.so /lib64/libhikos_ceph.so
@gcc -Wall -g -rdynamic -lhikos_storage -lhikos_common -lhikos_ceph -o cli_ceph cli_ceph.c
@cp -f cli_ceph /home/hikos/system/bin/
@echo “MakeInstall: libhikos_ceph.so”
clean:
@rm -f cli_ceph libhikos_ceph.so
@echo " MakeClean: libhikos_ceph.so libhikos_ceph.o"

-g: 令 gcc 生成调试信息,该选项可以利用操作系统的“原生格式(native format)”生成调试信息。GDB 可以直接利用这个信息,其它调试器也可以使用这个调试信息
加上-g选项以后,gcc在编译时会做以下额外的操作:

  1. 创建符号表,符号表包含了程序中使用的变量名称的列表。
  2. 关闭所有的优化机制,以便程序执行过程中严格按照原来的C代码进行。
    -Wall:显示所有警告
    -shared:表示调用动态库
    -fPIC:作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code),则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意 位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。
    -lcrypto:链接libcrypto.so这个库
    -rdynamic:是一个 连接选项 ,它将指示连接器把所有符号(而不仅仅只是程序已使用到的外部符号)都添加到动态符号表(即.dynsym表)里,以便那些通过 dlopen() 或 backtrace() (这一系列函数使用.dynsym表内符号)这样的函数使用。
    -lhikos_common :链接hikos_common库
发布了56 篇原创文章 · 获赞 6 · 访问量 6874

猜你喜欢

转载自blog.csdn.net/qq_23929673/article/details/95727244