gcc 学习笔记

gcc 编译程序的过程


预处理(Pre-Processing)
编译(Compiling)
汇编(Assembling)
链接(Linking)


选项名
作用
-o
产生目标(.i、.s、.o、可执行文件等)
-c
通知gcc取消链接步骤,即编译源码并在最后生成目标文件
-E
只运行C预编译器
-S
告诉编译器产生汇编语言文件后停止编译,产生的汇编语言文件扩展名为.s
-Wall
使gcc对源文件的代码有问题的地方发出警告
-Idir
将dir目录加入搜索头文件的目录路径
-Ldir
将dir目录加入搜索库的目录路径
-llib
链接lib库
-g
在目标文件中嵌入调试信息,以便gdb之类的调试程序调试



静态库与共享库


静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库

共享库( .so或.sa ):程序在运行的时候才去链接共享库的代码,多个程序共享使用库的代码。



一个与共享库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件的整个机器码
在可执行文件开始运行以前,外部函数的机器码由操作系统从磁盘上的该共享库中复制到内存中,这个过程称为动态链接(dynamic linking)
共享库可以在多个程序间共享,所以动态链接使得可执行文件更小,节省了磁盘空间。操作系统采用虚拟内存机制允许物理内存中的一份共享库被要用到该库的所有进程共用,节省了内存和磁盘空间。
生成静态库

hello_fn.h
hello_fn.c
main.c
gcc -Wall hello_fn.c -o hello_fn.o
ar rcs libhello.a hello_fn.o
ar是gnu归档工具,rcs表示(replace and create)
gcc -Wall main.c libhello.a -o main
gcc -Wall -L. main.c -o main -lhello


库搜索路径
C_INCLUDE_PATH、LIBRARY_PATH
从左到右搜索-I -L指定的目录。
由环境变量指定的目录
由系统指定的目录


生成共享库
shared: 表示生成共享库格式
fPIC:产生位置无关码(position independent code)
库名规则:libxxx.so
示例:gcc -shared -fPIC hello.o –o libhello.so
使用共享库
编译选项
l:链接共享库,只要库名即可(去掉lib以及版本号)
L:链接库所在的路径.
示例:
gcc main.o -o main –L. -lhello

运行共享库

q1、拷贝.so文件到系统共享库路径下
    一般指/usr/lib
q2、更改LD_LIBRARY_PATH
q3、ldconfig
 配置ld.so.conf,ldconfig更新ld.so.cache



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RTKLib是一种基于GNSS(全球导航卫星系统)的实时运动定位库。它提供了一系列的工具和算法,用于处理GNSS观测数据,进行精确的实时或者后处理定位。下面是一个关于RTKLib的学习笔记的概述: 1. RTKLib简介: - RTKLib是由Tomoji Takasu开发的开源软件库,用于实时运动定位和后处理。 - 它支持多种GNSS系统,包括GPS、GLONASS、Galileo、BeiDou等。 - RTKLib提供了一系列的功能模块,包括数据处理、定位算法和可视化工具等。 2. RTKLib的安装: - RTKLib可以从官方网站(http://www.rtklib.com)下载最新的源代码。 - 根据操作系统选择合适的编译工具(如GCC、MinGW等)进行编译。 - 编译完成后,可以得到可执行文件和相关的库文件。 3. RTKLib的数据处理: - RTKLib支持多种数据格式,包括RINEX、SP3、Nav等。 - 使用RTKConv工具可以将原始观测数据转换为RTKLib可识别的格式。 - 使用RTKPLOT工具可以对观测数据进行可视化分析。 4. RTKLib的定位算法: - RTKLib提供了多种定位算法,包括单点定位、差分定位和RTK(实时动态定位)等。 - 单点定位方法适用于无差分数据,可以得到相对较低的定位精度。 - 差分定位方法通过使用基站观测数据进行差分运算,提高了定位精度。 - RTK定位方法使用基站和移动站的观测数据,实现了高精度的实时定位。 5. RTKLib的应用: - RTKLib广泛应用于航空、测绘、农业、机器人等领域,用于精确的定位和导航。 - 它可以用于无人机、自动驾驶、精准农业等应用场景。 - RTKLib还支持多种操作系统,包括Windows、Linux和Android等。 以上是关于RTKLib的学习笔记的基本概述。希望对你的学习有所帮助!如果你有更具体的问题,可以继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值