zoukankan      html  css  js  c++  java
  • 实验四 Linux系统C语言开发环境学习

    实验四 Linux系统C语言开发环境学习

    项目 内容
    这个作业属于哪个课程 课程链接
    这个作业的要求在哪里 作业要求
    学号-姓名 17041401-黄兰兰
    作业学习目标 1、Linux系统下C语言开发环境搭建 2、学习Linux系统环境C语言开发过程

    实验内容

    1.安装c语言开发环境

    sudo apt install build-essential
    

    1).查看gcc的版本信息

    gcc -v
    

    2).查看make版本信息

    make -v
    

    2.简单C语言练习

    1)首先我们通过man命令查看帮助文档

    man gcc
    

    2)命令行模式简单C语言编译链接等操作

    我们可以通过vim编辑器编写一个最简单的C语言程序,如写一个输出自己学号的程序。先创建一个文件夹,然后进入该新创建的文件夹。

    由于一开始我系统的vim编辑器的配置文件被重新更新了,所以中间一系列操作文件名就不一致了,下面我重新配置vim后,建了另一个文件test2.c

    cat test2.c
    
    a.预编译

    gcc -E test2.c -o test2.i #预编译
    test2.c #源程序文件
    test2.i #预编译后生成的文件

    vim编辑器编写test2.c

    用cat查看文件内容

    b.编译

    gcc -S test2.i -o test2.s
    test2.s #编译后生成的文件


    c.汇编

    gcc -c test2.s -o test2.o
    test2.o #目标文件即二进制文件

    通过objdump命令来反汇编该文件来分析文件内容

    d.链接

    gcc test2.o -o test2
    test2 #可执行文件

    用objdump命令来反汇编该文件分析文件内容

    objdump -d test2
    
    e.运行

    3).多文件编译

    在exp4文件夹下面再建一个文件夹mfc

    在该文件夹下面创建5个文件,文件名分别如下:

    每个文件的内容分别如下:

    cat main.c #查看main.c文件内容

    cat my1.h #查看my1.h文件内容

    cat my1.c #查看my1.c文件内容

    cat my2.h #查看my2.h文件内容

    cat my2.c #查看my2.c文件内容

    接下来进行编译,对于多文件编译,可以一次编译链接生成可执行文 件,也可以分别编译每个C文件,最后再进行链接得到可执行文件。

    请说明两种方法的区别?

    多个文件一起编译时:
    gcc my1.c my2.c main.c -o main1 将my1.c、my2.c、main.c分别编译后链接成main1可执行文件。
    分别编译各个源文件,之后对编译后输出的目标文件链接:
    gcc -c my1.c 将my1.c.c编译成my1.o
    gcc -c my2.c 将my2.c编译成my2.o
    gcc -c main.c 将main.c编译成main.o
    gcc my1.o my2.o main.o -o main2 将my1.o、my2.o、main.o链接成main2可执行文件
    

    由于之前的文件夹已存在可执行文件,故先将可执行文件删除,再编写一个简单的Makefile,通过make工具进行编译。

    make #根据Makefile文件编译源代码、连接、生成目标文件、可执行文件。

    查看Makefie文件内容

    Makefile #makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令

    make clean make clean #清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件

  • 相关阅读:
    原生JS---2
    PHP中include和require绝对路径、相对路径问题
    魔方(小玩具)
    html5技术介绍
    苹果电脑 快捷键
    写代码的心得,怎么减少编程中的 bug?
    http状态代码含义表
    开源项目
    蓝牙 CoreBluetooth
    减小iOS应用程序的大小
  • 原文地址:https://www.cnblogs.com/huanglanlan/p/12582959.html
Copyright © 2011-2022 走看看