gcc and g++

gcc和g++设置基本是一样的

编译流程

  1. 预处理(Preprocessing), 处理源代码宏定义。
  2. 编译(Compilation), 生成中间语言,可读的汇编指令代码,跟CPU架构和平台息息相关。
  3. 汇编(Assembly), 从中间语言生成对应的运行代码。
  4. 链接(Linking), 链接生成可执行程序

options

-Wl,<option,value> 传递参数到链接器,和-Xlinker类似
-Xlinker <option=value>
-l 等同于-Wl,-l,<库名>, 指定链接搜索库,例如myapp.cpp库名为myapp. 链接库是可以指定多个的, 例如: "gcc -l lib1 -l li2"
# 更多内容参考:gcc --help 和 man gcc

链接器(Linker)

LD, GNU连接器。 连接器用于组合目标文件生成可执行程序。比较常用的设置: Static库链接和Shared库链接。 g++通过-Wl,option传递ld的配置项.

main: libshared.so mylib.so main.o
    $(CXX) -o main  main.o -L. -l shared -Wl,--library,mylib

libshared.so: shared.cpp
    $(CXX) -fPIC -c shared.cpp -o shared.o
    $(CXX) -shared  -Wl,-soname,libshared.so -o libshared.so shared.o

参考

Link Options GNU Linker LD