静态库

原创 2011年01月13日 16:17:00

写了一个编译静态库和动态库的Makefile文档,修改Makefile中STATIC的值能够编译静态库或动态库。

  MakefileSTATIC=0

  LIBPATH=lib

  CFLAGS=-Wall

  LDFLAGS=-I$(LIBPATH) -L$(LIBPATH) -lfunc

  ifeq ($(STATIC), 1)

  LIB=$(LIBPATH)/libfunc.a

  else

  LIB=$(LIBPATH)/libfunc.so

  CFLAGS+=-fPIC

  endif

  TARGET=main

  SRC=main.c

  LIBSRC=libinc.c libdec.c

  LIBOBJ=$(addprefix $(LIBPATH)/, $(addsuffix .o, $(basename $(LIBSRC))))

  all: $(LIB) $(TARGET)

  target: $(TARGET)

  lib: $(LIB)

  $(LIBPATH)/%.o: %.c

  $(CC) $(CFLAGS) -o $@ -c $<

  ifeq ($(STATIC), 1)

  $(LIB): $(LIBOBJ)

  $(AR) -rcs $@ $^

  else

  $(LIB): $(LIBOBJ)

  $(CC) -shared -o $@ $^

  endif

  $(TARGET): $(SRC)

  $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

  clean:

  rm -f $(TARGET) $(LIB) $(LIBOBJ)

iOS 制作静态库时引入其他静态库

以前在制作静态库.a的时候也有导入其他静态库,但导入的都是.a形式的静态库,没有什么问题可以将其它的.a 静态库打入自己的.a静态库, 然后直接给用户提供自己的.a就行了,关于在我的.a静态库中引用...
  • zhouxiangyu666666
  • zhouxiangyu666666
  • 2017年07月05日 12:36
  • 207

链接一个静态库到另一个静态库

问题:有两个静态库a.lib和b.lib,静态库x.lib使用a.lib和b.lib,x.lib相当于提供了一个输出库,应用程序app.exe使用x.lib。那么,应用程序app当然需要连接到静态库x...
  • u012487272
  • u012487272
  • 2013年12月28日 08:54
  • 1758

Ubuntu 静态库

创建static.c文件,内容如下: #include void static_fun(void) { printf("hi,sir!\n"); } 创建静态库,分二步: gcc -c stat...
  • a379039233
  • a379039233
  • 2017年08月01日 17:10
  • 127

静态库的使用方法

静态库的使用简单介绍
  • jobbofhe
  • jobbofhe
  • 2016年03月25日 16:50
  • 1524

iOS开发之静态库的生成、静态库的合并、静态库使用

静态库的生成与使用 如何利用Xcode生成静态库呢?下面一起来学习吧。 首先是如何新建.a类型的静态库。 首先新建一个工程,如下图,选中生成.a静态库, Snip20151...
  • zhonggaorong
  • zhonggaorong
  • 2016年07月11日 10:09
  • 5211

静态库链接动态库时,如何使用该静态库

假设libXXX.a用了libpthread.so的函数“pthread_create”,那libXXX.a在链接时,有没有把“pthread_create”函数copy到自己身上,使其完全独立?ma...
  • newchenxf
  • newchenxf
  • 2016年06月22日 18:23
  • 5643

静态库能否调用动态库或者静态库

这个问题困扰了我很长一段时间,在网上查过说是不能调用,误人子弟啊,幸亏在项目上遇到了这个东西。在看项目代码的时候一直困惑于为什么其中的一个静态库工程没有设置 Additional Dependenci...
  • wangjunhe
  • wangjunhe
  • 2011年08月16日 10:29
  • 8955

nm可以看静态库, 但ldd不可以

nm可以看静态库, 但ldd不可以。       最近遇到, 仅作记录。
  • stpeace
  • stpeace
  • 2016年05月08日 23:14
  • 2839

Makefile 连接静态库注意事项

Linux的静态库是以.a结尾的,要连接静态库有两种方法,一种是在编译命令最后直接加上库路径/库名称。例如你的库在绝对目录/lib/libtest.a下面 你就可以这样来编译 $(CC) $(CF...
  • Blaider
  • Blaider
  • 2014年09月18日 13:18
  • 6952

静态库的链接顺序

今天工作中遇到了一个很诡异的问题: 项目中, a.c和b.c编译出的obj先打包成静态库c.a, 再和另外一个d.a以及main.c编译出的obj链接成最后的bin文件. a.c中有privat...
  • weiyuefei
  • weiyuefei
  • 2017年07月27日 09:37
  • 283
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:静态库
举报原因:
原因补充:

(最多只允许输入30个字)