当前位置:  技术问答>linux和unix

编译时如何区分动态链接和静态链接?

    来源: 互联网  发布时间:2016-03-28

    本文导语:  gcc的flag依靠-l(lib的名字)来链接函数库,比如要链接libm.so的时候就加上-lm做gcc的flag。但是,当编译过程中既有静态链接又有动态链接的时候,假设我加一个-lxxx,编译器是如何知道到底要链接libxxx.a还是libxxx.so呢?...

gcc的flag依靠-l(lib的名字)来链接函数库,比如要链接libm.so的时候就加上-lm做gcc的flag。但是,当编译过程中既有静态链接又有动态链接的时候,假设我加一个-lxxx,编译器是如何知道到底要链接libxxx.a还是libxxx.so呢?请高手给予指点。

|
默认优先动态库。
没有找到动态库再找静态库

|
  1 .PHONY:clean indent count                                                   
  2 
  3 INCLUDE     := $(shell pwd)/include
  4 SRCS        := $(shell pwd)/source
  5 LIB         := $(shell pwd)/lib
  6 OBJ         := $(shell pwd)/obj
  7 
  8 TARGET      := New_EP
  9 OBJS        := $(OBJ)/*.o
 10 LIBS        := -lpthread  $(LIB)/libjpeg.a $(LIB)/add2-ioctl.o
 11 
 12 CC          := g++
 13 WARN        := -Wall
 14 CFLAGS      := -g ${WARN} -I $(INCLUDE)
 15 DEBUG       := -D__DEBUG__
 16 LDFLAGS     :=
 17 
 18 New_EPOBJS  := $(OBJ)/main.o $(OBJ)/bitmap_oper.o $(OBJ)/color_yuv2rgb.o $(OO
    BJ)/common.o $(OBJ)/convertpicture.o $(OBJ)/cthread.o $(OBJ)/dh2-ioctl.o $(OO
    BJ)/drv0-v4l2.o $(OBJ)/grab-ng.o $(OBJ)/identifycarnum.o $(OBJ)/jpeg_write.oo
     $(OBJ)/lane.o $(OBJ)/monitorcontrol.o $(OBJ)/monitormachine.o $(OBJ)/readcoo
    nf.o $(OBJ)/savepicture.o $(OBJ)/upload.o
 19 
 20 all: ${TARGET}
 21 
 22 New_EP:     ${New_EPOBJS}
 23     ${CC} ${LDFLAGS} ${DEBUG} -o $@ ${New_EPOBJS} ${LIBS}
 24 
 25 $(OBJ)/%.o: $(SRCS)/%.cpp
 26     ${CC} ${DEBUG} ${CFLAGS} -c -o $@ $

    
 
 

您可能感兴趣的文章:

  • 编译静态链接库,其中使用了其它链接库,该如何写makefile
  • Linux下gcc编译时,如何以静态链接的形式编译?
  • 请问:我要链接哪些oci库才能成功编译.我在编译的时候老是报OCI函数找不到.
  • 问一个编译动态链接库的问题
  • linux 编译的时候,如何与.a静态库做链接生成.elf文件?
  • arm-linux-gcc 编译时加载<math.h>动态链接库的问题
  • 交叉编译,动态链接库运行出错!请高人指点
  • unix 如何使用xlC_r把程序编译成动态链接库
  • 请问编译静态链接库的makefile该如何写?
  • 求助:程序能编译但不能链接,重新安装了GCC也是那样的问题
  • xlc编译最后链接时出现未定义的问题
  • qt libphonon.so的编译链接问题
  • LINUX下的静态库编译链接问题
  • 高手接分!UNIX 64位动态链接库编译问题
  • 程序编译时链接库文件的问题
  • c++编译链接时怎样添加头文件和库信息?
  • linux程序编译链接后无法运行,找不到so文件
  • 使用KDevelop编译链接出错
  • 请问在Linux下怎么样编译、链接汇编,用的是什么软件,哪里有下载?
  • 编译过程中编译器和链接器为什么不一样啊?
  • 动态编译与静态编译驱动程式疑问?
  • gcc的静态库.lib怎末在编译的时候连接。对了静态库是自己的???
  • 急求静态库引用静态库,该如何编译链接!!!
  • 请教一个gcc静态编译的问题。
  • 关于静态编译
  • 静态库编译问题
  • 如何编译一个静态的so
  • solaris9 静态库编译出错
  • apache模块静态编译问题
  • 关于交叉编译中静态库的位置
  • 请问大虾,如何将静态库文件 .a 进行反编译? 在线等
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 为什么J2SE编译和运行程序时命令行区分大小写?
  • linux/centos源码安装nginx编译配置选项参数介绍
  • 请教:JSP编译器编译成字节码,跟别的编译器编译出来的有什么不同呢?
  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • 编译GCC时能不能只编译C/C++的编译器?
  • 高速的网络抓包库PF_ring介绍及编译安装
  • 关于arm交叉编译器4.3.3编译程序报错,但是3.4.5却能编译通过的问题
  • JB下,我的程序编译得好慢!请问用什么方法编译才可以快一点?或编译顺序改变一下?
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • 用JCreator写了一个小程序,有十几个class,当修改某个文件重新编译,javac并没有编译修改的文件,请问要如何做javac才会重新编译所有的
  • 问:关于gcc编译器和g++编译器
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • 在cygwin编译驱动程序要不要交叉编译?
  • 关于如何把编译进内核的编译成模块
  • C编译器 c++编译器 wieldylcc
  • CentOS 6内核升级:下载编译启用新内核版本详细过程 iis7站长之家
  • 编译失败后如何再继续编译
  • 编译qt-x11,最后编译生成可执行文件时候,make出错
  • 如何查看已编译安装软件的编译命令行
  • 请问哪里有反编译.class文件的反编译器?
  • 用Jdk编译时出现提示要加 -deprecation 再编译,请教??
  • linux下有没有能编译出16bit代码的C语言编译器?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3