Linux - gcc编译详解

gcc 重点

image

gcc 编译过程拆解

image

一步到位的编译

image

更详细的步骤见下图

image
image

指定头文件所在路径,使用参数 -I headDir

image

相关参数信息

image

image

静态库的制作 -超重点

1.生成*.o文件

image

2.使用ar工具将*.o打包-就生成了静态库

image

3.将静态库放到合适的位置

image

4.静态库的使用:
下面2种使用方式-重点

image

打包时,以*.o为单位打包到可执行程序中,并不一定是所有的都被打包
用到谁就打包谁

image

动态库/共享库的制作 -超重点

第一步:生成与位置无关的*.o

image

第二步:打包-生成*.so文件

image

第三步:指定位置(看情况-可忽略)

image

第四步:使用
两种使用方式同静态库一样

image

超重点

下面是解决第二种方式出错的几种方法

首先查看可执行文件所依赖的动态/共享库

image

4种加载方式
(1)将动态库拷贝到lib里面(lib里面存放的是linux系统启动/运行时需要的动态库)   -------但是在实际开发过程中杜绝使用
操作完毕后,相关变化如下

image

(2)将动态库的路径指定给环境变量LD_LIBRARY_PATH
此方法只能起到临时作用,终端关闭就会失效:建议在开发动态库的测试过程中使用此方法

image

(3)在.bashrc里面添加动态库所在路径,然后重启终端即可(因为在启动一个终端时先执行.bashrc文件,也就执行了所需要配置的动态库的路径)
	此方法为永久设置,但是也并不经常使用

image
image

(4)最重要同时也是最复杂的一种方案  1) 2) 3) 4)

image

1).找到动态链接器的配置文件

image

2)修改配置文件:将动态库的绝对路径添加进去

image

3)更新操作必不可少
sudo ldconfig  或者 sudo ldconfig -v

image

4)查看一下可执行程序的链接库的路径,发现还是绝对路径-故而相对较重要

image

posted @ 2022-10-24 19:15  mnst  阅读(201)  评论(0)    收藏  举报