有如下的文件目录结构
格式一
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)