gcc编译复习结合最近项目

gcc原本是GNU C Compiler,现在是GNU Compiler Collections。

gcc编译C文件分为四步,依次为预处理、编译、汇编、链接。

1.预处理
gcc -E main.c -o main.i
让编译过程进行完预处理就停止

2.编译(变为汇编代码)
gcc -S main.i -o main.s
编译是以预处理文件作为输入,进行编译,形成汇编代码。

3.汇编
gcc -c main.s -o main.o
将汇编文件作为输入,生成目标文件

4.链接
gcc main.o -o main.out
将目标文件进行链接,形成最终可执行文件。

gcc编译的时候最好加上-Werror,将警告当成错误提示,因为警告很多时候以为着可能出错。

使用gcc来编译库文件,可以编译成动态库和静态库,分别以.so和.a结尾。

1.gcc生成静态库
gcc -c hwoff-shmap.c -o hwoff-shamp.o
ar cr libhwoffshmap.a hwoff-shmap.o

首先生成目标文件,然后将所有目标文件集合成为静态库文件
ar cr 目标库.a 目标文件集合

对静态库的使用
gcc main.c -L. lhwoffshmap -o main

2.gcc生成动态库
gcc -c hwoff-shmap.c -o hwoff-shmap.o
gcc -shared -fPIC -o libhwoffshmap.so hwoff-shmap.o

gcc -shared -fPIC -o 动态库.so 目标文件集合

5.gcc默认搜索文件
gcc在编译是要寻找头文件和库文件
gcc首先从-I搜索头文件,然后找gcc的环境变量下(C_INCLUDE_PATH),之后找系统内定的目录/usr/include  /usr/local/include等等。

库文件搜索先找-L,再找gcc设定的环境变量LIBRARY_PATH下
再找/lib  /usr/lib  /usr/local/lib等目录。

最近在OVS上进行硬件卸载相关的开发,主要维护的一个模块是软硬件流表映射模块,作为单独的模块,添加模块所需要的头文件和源文件。
然后添加到automake.mk中,之后连接DPDK进行编译。

这个时候,对于用户态的代码,OVS会编译出一个静态库,放在/usr/lib64目录下,名称为libovspatch.a,我们要想测试自己的模块功能,可以讲这个静态库与我们的测试桩编译成可执行文件,然后进行测试。

本文遵从CC3.0协议转载请注明:转自凌风技术站

本文标题:gcc编译复习结合最近项目

本文链接地址:http://www.iaccepted.net/c/138.html

相关文章



发表评论

电子邮件地址不会被公开。 必填项已用*标注