有如下的文件目录结构

格式一
swap.h

swap.cpp

main.cpp

编译方法和结果如下:

格式二
swap.cpp

main.cpp

使用命令:g++ main.cpp src/swap.cpp -o main.exe

解决方法使用参数 -I

格式三-将swap.cpp生成一个静态库然后链接到main.cpp中
-
生成可重定位目标文件 *.o文件 汇编阶段

-
归档,生成静态库

在linux中 静态库以.a结尾,动态库以.so结尾

- -l(小写)用来指定程序要连接的库,-l紧接着就是库名
- -L,跟着库文件的目录名
- -I(大写)指定头文件的搜索目录
格式四-动态库
-fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code),则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。

但此刻是没法运行的,如下:

解决方法如下(LD_LIBRARY_PATH)




















