gcc and g++
gcc和g++设置基本是一样的
编译流程
- 预处理(Preprocessing), 处理源代码宏定义。
- 编译(Compilation), 生成中间语言,可读的汇编指令代码,跟CPU架构和平台息息相关。
- 汇编(Assembly), 从中间语言生成对应的运行代码。
- 链接(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