首页 > 编程语言 >GCC预处理、编译、汇编、链接全过程

GCC预处理、编译、汇编、链接全过程

时间:2023-04-21 14:22:57浏览次数:29  
标签:GCC lib gcc hello 编译 ld usr linux 预处理

//hello.c
#include <stdio.h>
int
main (void)
{
printf ("Hello, world!\n");
return 0;
}

 

预处理:替代宏,引入头文件

cpp hello.c > hello.i

 

编译:

gcc -Wall -S hello.i

(生成hello.s)

 

汇编:

as hello.s -o hello.o

(生成hello.o)

 

链接:

复杂ld版:

ld -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o
/usr/lib/gcc/i486-linux-gnu/4.3/crtbegin.o -L/usr/lib/gcc/i486-linux-gnu/4.3
hello.o -lgcc -lgcc_eh -lc /usr/lib/gcc/i486-linux-gnu/4.3/crtend.o
/usr/lib/crtn.o

 

利用gcc完成:

gcc hello.o

(生成a.out)

标签:GCC,lib,gcc,hello,编译,ld,usr,linux,预处理
From: https://www.cnblogs.com/woodx/p/17340197.html

相关文章

  • JVM中的编译器
    JVM中集成了两种编译器,ClientCompiler和ServerCompiler,它们的作用也不同。ClientCompiler注重启动速度和局部的优化,ServerCompiler则更加关注全局的优化,性能会更好,但由于会进行更多的全局分析,所以启动速度会变慢。两种编译器有着不同的应用场景,在虚拟机中同时发挥作用。Clien......
  • Linux 编译安装 OpenSSH
    1.安装依赖yum-yinstallgccopenssl11openssl11-develpam-develzlib-devel2.设置编译FLAGexportCFLAGS=$(pkg-config--cflagslibssl11)exportLDFLAGS=$(pkg-config--libslibssl11)3.备份配置,删除系统自带软件包mv/etc/pam.d/sshd/etc/pam.d/sshd.bakrpm-e--n......
  • Linux 编译安装 Python3
    本文档适用Python3.9及以上版本。1.提前安装依赖yuminstall-ygccncurses-develgdbm-develxz-develsqlite-develtk-develuuid-develreadline-develbzip2-devellibffi-developenssl11openssl11-devel2.设置编译FLAGAWSAMI:exportCFLAGS=$(pkg-config--cflagsli......
  • 每天打卡一小时 第十一天 编译四部曲
     第一部曲自然语言创建函数,对函数进行定义声明第二部曲流程图不用了吧第三部曲代码#include<iostream>usingnamespacestd;classComplex{public:Complex(doubler=0,doublei=0):real(r),imag(i){}Complexoperator+(Complex&c......
  • 【原创】实验验证 -fstack-protector 编译选项效果
     使用 -fstack-protector选项的编译脚本  [root@Bettystack_smash_test]#catmk.sh  #!/bin/bash g++-O2-Wall-m32-shared-Wl,-fpiccaptureexception.cpp-olibcaptureexception.so gcc-g-fstack-protector-Wall-U_FORTIFY_......
  • ubuntu编译字符设备
    前言创建一个简单的字符设备驱动程序。​ 本文命令的运行基本上都需要root权限,使用root账号,或者在命令前面加上sudo。​ 如果你使用ssh远程连接的服务器进行代码编写。那么不要在root用户下创建文件或者文件夹。这会导致你ssh连接vscode编写代码的权限问题。可以在普通用户创建......
  • c++ 静态编译和动态编译
      C++是一种高级编程语言,它支持两种不同的编译方式:静态编译和动态编译。下面是它们的介绍:静态编译  静态编译是将程序代码和库函数一起编译成一个可执行文件的过程。在静态编译过程中,程序代码和库函数的代码被组合在一起,形成一个独立的可执行文件,该文件可以在任何系统上运行......
  • jad 命令行批量反编译
    下载地址:http://varaneckas.com/jad/ 解压放到jdkbin目录比如需求是要把org文件夹下及其子文件夹下所有的class文件反编译后放到src目录中,并保持package原始结构命令这样:jad-r-dsrc-sjava"org/**/*.class"-r表示保持原始package结构-dsrc表示output目录为当前的src目录-......
  • 修改maven3项目的默认的编译级别(compile level)
    评:听闻maven的鼎鼎大名打算在最近的一个项目中试下爽,结果遇到了这个问题,虽对项目影响不大,但做技术刨根问题是必须的了,少废话。1.cmd命令建立web项目:mvnarchetype:generate-DgroupId=biz.yunduo-DartifactId=dts-DpackageName=dts-DarchetypeArtifactId=maven-archetype-we......
  • gcc: fatal error: cannot execute ‘cc1plus’: execvp: No such file or directory
     01、安装 HTSeq软件出现如下报错,编译失败 02、原因是没有c++编译器,解决方法:aptinstallg++##安装c++编译器 03、再次安装HTseq,报错消失。 ......