gcc

gcc_第1张图片


gcc_第2张图片


gcc_第3张图片


gcc_第4张图片


gcc_第5张图片


gcc_第6张图片


gcc_第7张图片


gcc_第8张图片


gcc_第9张图片







gcc_第10张图片

gcc_第11张图片

预编译生成hello1.c

可见代码非常多

gcc_第12张图片

gcc_第13张图片

gcc_第14张图片

gcc_第15张图片对比一下发现少了头文件,其实是把include包含的头文件的内容(即stdio.h和stdlib.h的内容)全部加入进来了

具体看一下stdio.h的内容

很长

我们一般会干涉编译和链接而不是预编译,

gcc_第16张图片


gcc_第17张图片


gcc_第18张图片

gcc_第19张图片

一般会这样编译

编译就是编译 链接就是链接 这样一步一步地可以发现错误是怎样的

gcc_第20张图片


新加文件add.c

gcc_第21张图片新加文件add.h

gcc_第22张图片

gcc_第23张图片更改文件hello.c

系统头文件用<> 用户头文件用""这样才可以才windows 和linux下兼容

gcc_第24张图片

因为add函数并没有编译过所以会报错,需要把add.c编译一下

gcc_第25张图片




gcc_第26张图片



gcc_第27张图片

gcc_第28张图片



gcc_第29张图片

gcc_第30张图片

gcc_第31张图片


可见参数很多

gcc_第32张图片

gcc_第33张图片

gcc_第34张图片

gcc_第35张图片

linux不区分扩展但gcc区分扩展

gcc_第36张图片c和c++是两种不同的独立语言,所以他们的库也不同。认为c有过程和c++有类,其他的一样,这种理解是不对的

gcc_第37张图片

gcc_第38张图片gcc本身不进行链接而是调用ld这个命令来进行连接

不是编译时出错

gcc_第39张图片

看看libstdc++.so在哪里

gcc_第40张图片

gcc_第41张图片


gcc_第42张图片

gcc_第43张图片

发现没有找到add 找到了main


gcc_第44张图片


gcc_第45张图片这时发现add


gcc_第46张图片

gcc_第47张图片

c++编译之后add变为addii c++会把编译完的目标代码函数的名字改变(重载的原理)

这就是的dll,so文件为什么用c做的原因 c++做完之后名字就变了,你无法调用

c++需要的库

gcc_第48张图片

c需要的库

gcc_第49张图片

编译c++最好使用g++

gcc_第50张图片

你可能感兴趣的:(linux,gcc)