linuxgcc编译器怎么用 linux中gcc编辑器-淘姐妹-

{site_name}

{site_name}

🌜 搜索

linuxgcc编译器怎么用 linux中gcc编辑器

▥ 𝄐 0
<br> <p>需要云服务器等云产品来学习Linux的同学可以移步/--&gt;腾讯云&lt;--/--&gt;阿里云&lt;--/--&gt;华为云&lt;--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。?</p> <p><strong>目录</strong></p> <p style="margin-left:0px;"><span style="color:#fe2c24;">一、编译的过程</span></p> <p style="margin-left:40px;"><span style="color:#e6b223;">1、预处理阶段</span></p> <p style="margin-left:80px;"><span style="color:#a2e043;">1.1预处理的工作――头文件展开、去注释、宏替换、条件编译</span></p> <p style="margin-left:80px;"><span style="color:#a2e043;">1.2外部定义宏&#xff08;-D选项&#xff09;</span></p> <p style="margin-left:80px;"><span style="color:#a2e043;">1.3Linux中头文件的路径</span></p> <p style="margin-left:40px;"><span style="color:#e6b223;">2、编译――编译是把C语言处理为汇编语言</span></p> <p style="margin-left:40px;"><span style="color:#e6b223;">3、汇编――把汇编转为可重定向二进制目标文件&#xff08;不可执行&#xff09;</span></p> <p style="margin-left:40px;"><span style="color:#e6b223;">4、链接――把自己写的代码和C库中的代码合并成二进制程序&#xff08;可执行&#xff09;</span></p> <p style="margin-left:0px;"><span style="color:#fe2c24;">二、动态链接和静态链接</span></p> <p style="margin-left:40px;"><span style="color:#e6b223;">1、动态链接</span></p> <p style="margin-left:80px;"><span style="color:#a2e043;">动态链接的优缺点</span></p> <p style="margin-left:40px;"><span style="color:#e6b223;">2、静态链接</span></p> <p style="margin-left:80px;"><span style="color:#a2e043;">静态链接的优缺点</span></p> <p style="margin-left:40px;"><span style="color:#e6b223;">3、程序动、静态链接的区分</span></p> <p style="margin-left:80px;"><span style="color:#a2e043;">3.1查看程序是动、静态的方法</span></p> <p style="margin-left:80px;"><span style="color:#a2e043;">3.2查看程序依赖的动态库</span></p> <p style="margin-left:80px;"><span style="color:#a2e043;">3.3静态程序的生成</span></p> <p style="margin-left:80px;"><span style="color:#a2e043;">3.4关于动、静态库的问答</span></p> <p>观察编译和链接的内部流程&#xff0c;文件在每一步都发生了什么&#xff1f;</p> <p>-E表示当程序处理完预处理阶段就停下来&#xff1b;</p> <p>-o指明生成的临时文件的名称&#xff08;.i&#xff09;。Linux不认后缀&#xff0c;这个.i是给用户看的。</p> <p>注意这里在外部定义的宏仅在生成的a.out文件中生效&#xff0c;原test.c文件中并无改变。</p> <p>可以通过vim查看头文件&#xff0c;在头文件中搜索库函数。</p> <p>可以根据头文件进行代码补齐。</p> <p>-S表示进行程序的编译工作&#xff0c;编译完成之后就停止。</p> <p>通过链接器和库建立链接。可以理解为建立动态链接需要去C标准库等外部库里找对应的函数等。</p> <p>优点&#xff1a;形成的可执行程序较小&#xff0c;下载便捷&#xff1b;能够节省磁盘存储空间&#xff0c;且程序加载到内存的时间快。</p> <p>缺点&#xff1a;依赖动态库&#xff0c;程序的可移植性比较差。&#xff08;运行时问题&#xff09;</p> <p>静态链接指直接将所需的函数等代码直接加入到程序当中。</p> <p>优点&#xff1a;不依赖第三方库&#xff0c;程序的运行可移植性较好。</p> <p>缺点&#xff1a;形成的可执行程序体积大。</p> <p>动态库&#xff1a;libxxxx.so</p> <p>静态库&#xff1a;libxxxx.a</p> <p>Linux中库的命名&#xff1a;去掉前缀lib&#xff0c;去掉后缀.so&#xff0c;剩下的就是库的名称。例如lib<strong>c</strong>.so.6中所依赖的库为c库。</p> <p><span style="color:#ed7976;">Linux</span>中可执行程序<span style="color:#ed7976;">默认使用动态链接</span>&#xff0c;那么静态程序可以使用-【【微信】】。</p> <p><span style="color:#ed7976;"><strong>1、如果下载一个C语言写的程序&#xff0c;需不需要下载额外的C标准库&#xff1f;</strong></span></p> <p>动态文件所依赖的库基本上变化不大&#xff0c;而静态文件不需要依赖动态库&#xff0c;所以均不用额外下载C标准库。</p> <p><span style="color:#ed7976;"><strong>2、静态链接&#xff0c;拷贝的代码从何而来&#xff1f;</strong></span></p> <p>静态链接需要系统中存在.a结尾的静态库&#xff0c;从该静态库中拷贝代码。</p> <p>如果系统中没有动态链接库&#xff0c;仅有静态链接库&#xff0c;即便不加-【【微信】】&#xff0c;生成的可执行程序也是静态链接的。</p> <p><span style="color:#ed7976;"><strong>3、Windows下动、静态库的区分</strong></span></p> <br><br><h1 style="font-size: 38px;color: #4d4f53;">老山牺牲英雄遗照 老山轮战中枪牺牲的烈士视频</h1><br> <p>1985年12月2日,济南军区第67军组织199师部队分别对越军据守的405和968等7个高地实施出击拔点作战。当天凌晨5时15分,597团4连奉命分成两个梯队出发,其中第一、第二突击队作为第一梯队由副连长梁岭率领,秘密向405号阵地摸近;第二梯队由一排长都昌林等率领,间隔80米紧随第一梯队跟进。经过7小时15分钟浴血奋战,4连出击分队全部攻占预定高地,共歼敌81人。在激战中梁岭壮烈牺牲!时年24岁,在他遗体的左上衣口袋里找到了一个被鲜血浸透了的小笔记本,扉页上写着:“祖国,我的一切都是属于您的!”战后,梁岭被追记一等功,并被成都军区授予“战斗英雄”荣誉称号!</p>