在Linux环境下简单编程学习心得

linux编程过程

在上周的《信息安全设计基础》的课程学习中学习到了在虚拟的linux环境下简单的编程。学习过程中接触到了vim、gcc和gcd在实验楼中,也利用了实验楼的环境完成了实验。

在实验楼里模拟出来的环境的确方便了学习,但是因为会有时间限制,有些知识就学的不够精通,于是又在自己的电脑上的虚拟机再次练习尝试,结果就发现遇到了很多问题。

  • 编译原理

    首先需要了解vim、gcc和gcd的分别的作用是什么。

    • vim:用来编写程序使用,写入代码的.c源文件

    • gcc:用来编译源文件,共有4个步骤

      • 预处理阶段:使用预处理器(cpp)将源程序加工为.i格式的被修改源程序
      • 编译阶段:使用编译器(ccl)将上一步的.i格式的文件加工为.s格式的汇编程序
      • 汇编阶段:使用汇编器(as)将上衣步的.s文件加工为.o格式的可重定位的目标程序(二进制
      • 链接阶段:使用链接器(ld)将上一步的.o格式的文件加工为可执行目标程序(二进制
    • gcd:调试程序,当程序不在是简单的Hello Linux时候 就需要设断点来确认各个函数的可行性。

    • 而在实验楼练习的vimtutor是一种简化程序员使用的编程的操作练习,提高键的功能组合,提高编程的能力使用的。

在实验中遇到的问题和解决过程

  • 如何进入root账户

  • 在普通用户进入root用户:

     - 首次启用:
    
         XXX:~$ sudo passwd root
    
         [sudo] password for XXX:输入密码
    
         确认:输入密码
    
         再确认:再次输入密码
    
         提示成功更新密码
    
         此时已经root用户已经启用
    
     - 二次启用:
    
         XXX:~$su root
    
         密码:输入密码
    
         此时已经进入到了root用户
    
     - 退出toot用户:
    
          键入exit就可以退出到普通用户进行后续操作
  • 安装gcc

    首先我的linux里面并没有安装gcc,在网上百度的教程,首先需要进入root账户,之后键入yum install gcc。

    然而显示了需要提示到root用户。起初我对于系统还不太明白,通过查询知识发现有普通用户和root用户,root用户可以对电脑的的更高级操作进行授权。

    进入了root用户,再次使用yum install gcc,提示依然有错误,显示E:无法获得锁/var/lib/dpkg/lock-open

后来也通过查询出现这种原因的主要是因为软件更新或者安装时出现错误。删除掉两个临时文件就好

通过键入代码`sudo rm/var/lib/dpkg/lock   sudo  /var/cache/apt/archive/lock`成功的解决了问题。

后来在博客园看到一篇关于linux学习心得,看到了一个

** ubuntu默认的软件包管理器不是yum,而是dpkg,**安装软件时用apt-get,命令代码为 `sudo apt-get install XX`

并给出建议:在ubuntu下最好不要安装yum,不然会出现奇怪的问题

之后是使用命令行sudo apt-get install gcc 成功的下载安装了gcc

  • 源的调整

    首先软件源:软件源是Linux系统免费的应用程序安装仓库,很多的应用软件都会这收录到这个仓库里面。深度操作系统继承了debian和ubuntu使用命令apt-get在软件仓库中搜索、安装、升级、卸载软件,基于Ren Hat的多数Linux则使用yum命令。也有少数Linux使用自己的包管理系统,如YlmfOS的Ypk,SUSE的YaST,Gentoo的Portage等。主要时apt-get的使用。

    在安装gcd时候遇到了问题,无法安装。后来检查是因为源需要更新,后来通过看博文使用了sudo apt-get update解决了问题。

    不仅可以用代码解决这个问题,也可以使用系统设置来跟新源

心得体会

发完上周的博客总结,但总是觉得知识并没有掌握透彻,上周的学习重点并没有把握住,之后在又再次重新操作了一下,的确不出所料,还是存在很多问题的,还有一些很细节的问题,如何进入到下一级文件夹,退出上一及,如何再编译,如何删除文件,这些命令看似简单但却常用,不加以练习很容易弄混肴。

  • 编译结果

    经过vim的编写和gcc的运行得到了结果

编译了操作一遍后,对这个掌握的也更加透彻,对于博客中涉及到的gcc的命令为什么gcc 20145335.c -o 2014335和gcc 20145335.c -s 20145335 不同,这种简单的问题就会自然而解,产生的知识中间文件,不同阶段就有不同的文件产生,知道我学习的能力和理解能力一般,但还是需要付出努力去学习。The best way to predict the future is to invent it.

Linux简单编程学习心得的更多相关文章

  1. 一点点linux系统的学习心得

    我相信你正在阅读本文的时候,可能是因为你渴望学习Linux技术.我想分享一下过去两年中我自己的一些学习经历,希望你能更顺利地成为Linuxer. 两年前在Linux系统的运行和维护方面找到了一份工作( ...

  2. Linux 系统编程 学习:00-有关概念

    Linux 系统编程 学习:00-有关概念 背景 系统编程其实就是利用系统中被支持的调度API进行开发的一个过程. 从这一讲开始,我们来介绍有关Linux 系统编程的学习. 知识 在进行Linux系统 ...

  3. Linux 系统编程 学习:02-进程间通信1:Unix IPC(1)管道

    Linux 系统编程 学习:02-进程间通信1:Unix IPC(1)管道 背景 上一讲我们介绍了创建子进程的方式.我们都知道,创建子进程是为了与父进程协作(或者是为了执行新的程序,参考 Linux ...

  4. Linux 系统编程 学习:03-进程间通信1:Unix IPC(2)信号

    Linux 系统编程 学习:03-进程间通信1:Unix IPC(2)信号 背景 上一讲我们介绍了Unix IPC中的2种管道. 回顾一下上一讲的介绍,IPC的方式通常有: Unix IPC包括:管道 ...

  5. Linux 系统编程 学习:04-进程间通信2:System V IPC(1)

    Linux 系统编程 学习:04-进程间通信2:System V IPC(1) 背景 上一讲 进程间通信:Unix IPC-信号中,我们介绍了Unix IPC中有关信号的概念,以及如何使用. IPC的 ...

  6. Linux 系统编程 学习:05-进程间通信2:System V IPC(2)

    Linux 系统编程 学习:05-进程间通信2:System V IPC(2) 背景 上一讲 进程间通信:System V IPC(1)中,我们介绍了System IPC中有关消息队列.共享内存的概念 ...

  7. Linux 系统编程 学习:10-线程:线程的属性

    Linux 系统编程 学习:10-线程:线程的属性 背景 上一讲我们介绍了线程的创建,回收与销毁:简单地提到了线程属性.这一讲我们就来具体看看,线程的属性. 概述 #include <pthre ...

  8. Linux 系统编程 学习:11-线程:线程同步

    Linux 系统编程 学习:11-线程:线程同步 背景 上一讲 我们介绍了线程的属性 有关设置.这一讲我们来看线程之间是如何同步的. 额外安装有关的man手册: sudo apt-get instal ...

  9. Linux 系统编程 学习 总结

    背景 整理了Liunx 关于 进程间通信的 很常见的知识. 目录 与 说明 Linux 系统编程 学习:000-有关概念 介绍了有关的基础概念,为以后的学习打下基础. Linux 系统编程 学习:00 ...

随机推荐

  1. c# 解析json 字符串 报异常 Bad JSON escape sequence 解决方案

    当我试图将一个完整的本地路径的字符串串(如:c:\\aaa\\数学题\\三一班\\ea15ae66-d5cd-4244-87e4-fcf97b06b407.jpg)encodeURL之后当做一个页面参 ...

  2. netstat -tulpn

    [root@d java]# netstat -tulpnActive Internet connections (only servers)Proto Recv-Q Send-Q Local Add ...

  3. navicat导入数据出现中文乱码

    1.问题描述: excel转为csv后,导入英文时没错.但中文就是显示的乱码. 2.解决方法: 将csv用记事本打开,调整编码格式为UTF-8, 点击保存覆盖掉原文件,然后再 导入,乱码问题就解决

  4. Python 名称空间与作用域、闭包与装饰器

    Python 的名称 Python 的名称(Name)是对象的一个标识(Identifier).我们知道,在 Python 里面一切皆对象,名称就是用来引用对象的.说得有点玄乎,我们以例子说明. 例如 ...

  5. python的@classmethod和@staticmethod

    本文是对StackOverflow上的一篇高赞回答的不完全翻译,原文链接:meaning-of-classmethod-and-staticmethod-for-beginner Python面向对象 ...

  6. PHP_OS常量使用方法

    通过PHP_OS来获得当前运行的操作系统,如果直接使用将无法获取值,但有一些默认的值,使用方法如下: switch(PHP_OS) {        case 'FreeBSD':           ...

  7. MapReduce辅助排序

    需求:订单数据 求出每个订单中最贵的商品? 订单id正序,成交金额倒序. 结果文件三个,每个结果文件只要一条数据. 1.Mapper类 package com.css.order.mr; import ...

  8. shell awk实战

    一.文本处理 1.按行提取关键字频次(如取第5列) awk 'BEGIN{FS="|"} {a[$5]+=1;} END {for(i in a) print i ":& ...

  9. LINUX内核分析20133201

    实验:通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 学号:20133201 姓名:李冬辉 注: 原创作品转载请注明出处 +<Linux内核分析>MOOC课程http://m ...

  10. 21.SQL to MongoDB Mapping Chart-官方文档摘录

    有关关系型数据库跟Mongod的语法对比 In addition to the charts that follow, you might want to consider the Frequentl ...