linux c++程序静态链接和动态链接差异

linux c++程序静态链接和动态链接差异:
简单来说,就是:
静态链接: 编译时将所有的依赖库编译到程序中,运行时,仅和x86/x64平台相关, 基本能在相应平台所有机器运行; 缺点是程序size较大
动态链接: 编译时不会将依赖库编译到程序中,运行时动态调用, 故需要在兼容依赖库的版本的机器上运行;  优点是程序size较小

make S=y  表示传入静态链接选项;
make 不传入参数,即默认动态链接

# Comment/uncomment the following line to disable/enable static link
#S = y

# Add your debugging flag (or not) to CFLAGS
ifeq ($(S),y)
  STATIC_FLAG = -static-libstdc++ -static-libgcc  -static
else
  STATIC_FLAG = 
endif

LIB += $(STATIC_FLAG)



动态链接:

1444965339_paste.png


静态链接:

1444965362_paste.png


附上nm符号类型解释表:

1444965378_paste.png

| 0个评论