Linux学习笔记一 ---- Linux基础知识认知以及初识Linux下C编程入门

Linux学习笔记03——C编程环境 简介 概述 Linux下一般使用C语言编写系统程序以及对性能要求较高的程序 Linux通常使用gcc套件编译程序,运用gdb/ddd调式工具进行调试与排错 学习目标 理解Linux C程序的编译、执行过程,gcc命令选项,自定义函数库的制作 熟悉Linux C程序中编程错误的诊断与处理方法 熟悉使用Linux自带的字符串运算、排序算法、二叉树算法库编写应用程序 熟悉使用gdb/ddd调式Linux C程序 掌握利用命令行参数和环境变量给程序提供数据 能够使用make工具管理大型C/C++编 阅读详情

                                                                             

 

 

                                                                                         本文原创 ,转载必须注明出处 :http://blog.youkuaiyun.com/qinjuning

      

 

          从今天开始,下定决心一步一步开始步入Linux殿堂,重新拾起Linux学习时,依然记得大学时代对Linux的囫囵学习,

   劲头持续不了几天,就消亡在她那迷惑的外衣下。如今处于对Android系统的究极学习,以及其他很多目的,下定决心把Linux

   知识掌握好。

 

      本学习笔记素材来源 :

 

           1、《鸟哥的Linux私房菜_基础学习篇》(电子档)

           2、 两篇博文对Linux下C编程gcc命令的认知

                    Linux下C语言编程--基础知识     以及    Linux下的C编程实战

 

 

    一 、Linux 操作系统来源 

             大家懂得,省略…..

    

    二、Linux基本知识

               说明: 相关截图来自鸟哥那本书,目前我还没好好消化吸收 。还得继续加把劲。

 

        1、 Linnux 命令行介绍

 

       

    例如,我们常见的列出当前目录的文件/文件夹的基本命令为:    ls  –al  main

           说明: ls      为一个command

                      –al    为options  a 表示列出隐藏文件 ;  l 表示 列出文件/文件下的详细信息

                     main  为 parameter1   表示仅仅列出以“main“ 开头的文件/文件夹

 

    其他常用的命令包括:

         ls    列出当前目录的所有文件/文件夹信息

         data  列出当前时间日期

         cd   切换路径

 

      当然了,这么多command---命令超多并且每个用法超多,我们当然不可能如此记得,因此最强大的一个指令就是 man

  指令了。 该命令的用法如下:

                       man command  

        即可 , 知晓该command的所有用法了 。

 

      2、Linux文件属性说明:

 

              进入Linux后,在任何一目录 键入如下命令 ls -al  (该命令的意思是:详细列出所有文件和文件夹的信息) , 可以看到

     如下信息,加上了说明信息:    

   

    相关属性说明:

           第一列表达的信息是最重要的了, 图解如下:

 

 

 

          属性详细说明为:

 

                        

 

 

            其他的属性相对而言就比较好理解了。

 

        3、Linux下一些重要目录说明

 

                一些比较重要的目录有:

 

                        

 

                      

 

                   

 

                       

 

                    

 

 

三 、 Linux下C编程入门

          熟悉了Windows下编程的同学,初次接触Linux下C编程可能很不习惯,因为Linux并没有为我们提供集成开发环境IDE,

   例如Windows下的 VC,Visual Studio 等 。但是在Linux下C编程,能给你带来不一样的感受,它可以让你熟悉编译器如何生成

   可执行文件的各个步骤等。

 

 

       一般来说,生成一个可执行文件需要以下两步:

          1、编译:即编译源文件 ,生成目标文件

          2 、链接:即将相关的目标文件链接起来,生成一个最终可以执行的可执行文件。(在Windows中,命名一般以.exe结束 ;

            Linux下,则以文件属性-x来标记)

 

         最后,执行该可执行文件即可看到程序输出了。

 

        再次强调的一点是,关于程序编译的一些规范和方法,一般来说,无论是C、C++、还是pas,首先要把源文件编译成中间

  代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。然后再把

  大量的Object File合成执行文件,这个动作叫作链接(link)。

 

 

        总结一下,源文件首先会生成中间目标文件,再由中间目标文件生成执行文件。在编译时,编译器只检测程序语法,和函  

    数、变量是否被声明。如果函数未被声明,编译器会给出一个警告,但可以生成Object File。而在链接程序时,链接器会在所有

    的Object File中找寻函数的实现,如果找不到,那到就会报链接错误码(Linker Error),在VC下,这种错误一般是:Link 2001

    错误,意思说是说,链接器未能找到函数的实现。你需要指定函数的Object File.

 

  Linux下C编译器利剑GCC 命令初步认知

 

     GCC编译器是Linux平台下最重要的开发工具,它是GNU的C和C++编译器,其基本用法为:

            gcc [options] [filenames]

说明:为了下述表达方便,假定存在如下一个简单的C源文件, 

helloword.c   

   /**
     name      hellword.c  
     @author  qinjuning
   */

   int main()
   {
       printf("Hello World"n");
       return 0 ;
   }


 最简单的编译方法是 gcc  hellowrold.c 它会为目标程序生成默认的文件名a.out,直接执行该可执行文件,即可看到输出。

 

     例如 在shell中输入以下命令:

           First Step :  gcc helloworld.c   ↙ (即输入回车键)         Result :即可生成a.out 可执行文件

           Second     :   ./a.out                                                     Result  : 执行该文件,即可看到程序输出 。

 

      options为编译选项,GCC总共提供的编译选项超过100个,但只有少数几个会被频繁使用,我们仅对几个常用选项进行介绍。

 

    -o  含义:生成目标文件并且为指定生成的目标文件命名 ,

              例如:  gcc –o  helloworld   helloworld.c     那么生成的可执行文件为hello ,而不是a.out

    -c  含义: -c选项告诉GCC仅把源代码编译为目标代码而跳过汇编和连接的步骤,默认生成文件名为 [file_name].o 。

          PS:  由于头文件以及引用关系, 我们同样要利用gcc –o 命令为了对相关目标文件进行编译,以便生成一个可执行文件。

 

假设存在如下源代码,包含了主文件和头文件等

        

   
   主文件:  main.c
/* main.c */
#include <stdio.h>

#include "first_1.h"
#include "first_2.h"
int main()
{
   printf_str("This is my first linux c")  ;
   print_to_num(10) ;
   return 0 ;
}


  两个头文件 
/*printf_1.h */
#ifnde  _FIRST_H_
#define _FIRST_H_
  void printf_str(char *str);
#endif

/*printf_2.h */

#ifnde  _SECOND_H_
#define _FIRST_H_
  void print_to_num(int num);
#endif

  
 真正函数实现的源文件
/*printf_1.c */

#include <stdio.h>
#include "first_1.h"
void printf_str(char *str)
{
   printf("%s  . I am com" , str);
}

/*printf_2.c */
#include <stdio.h>
#include "first_2.h"
void print_to_num(int value)
{
   int i = 0 ;
   for( ;i < value ;i++)
      printf("cur value is %d ##\n" , i);
}  

 编译步骤如下:

        1 、编译:对不同的源文件生成目标文件(xxx.0)

                 gcc  -c  main.c               ↙        生成 main.o  目标文件

                 gcc  -c  printf_1.c          ↙         生成 printf_1.o目标文件

                 gcc  -c  printf_2.c          ↙         生成 printf_2.o目标文件

 

       2、链接:将相关的目标文件链接起来,并形成可执行文件

                 gcc -c  main  main.o  printf_1.0  printf_2.o            ↙   即可生成可执行文件main

 

       3、输入 ./main  即可执行该文件并可看到我们程序结果

 

   关于GCC的更多命令和调试方法,请参考如博客:

 

               Linux下的C编程实战































        
Linux下C语言编程快速入门指南 本文还有配套的精品资源,点击获取 简介:本指南旨在指导初学者在Linux环境下掌握C语言编程。首先介绍了Linux操作系统和C语言的基本概念,随后详细阐述了Linux下的C语言开发环境设置、编程基础知识、系统调用以及实践项目。通过学习本指南,读者将能够掌握从基础语法到系统编程的全过程,并能独立完成包括文件管理、网络通信等实用项目。 1. Linux操作系统简介 ... 阅读详情

相关推荐

机器学习参数寻优:方法、实例与分析

机器学习模型的性能很大程度上依赖于其参数的选择。参数寻优(Hyperparameter Tuning)是提升模型表现的关键步骤之一。本文将详细介绍主流的参数寻优方法,包括网格搜索(Grid Search)、随机搜索(Random Search)、贝叶斯优化(Bayesian Optimization)、和超参数优化库(如Optuna和Hyperopt)等,并探讨它们的优缺点及适用场景。

甜盐的博客 2840

Linux C学习笔记1

内容为学习笔记,以后学习中会随时增删所学内容。

Rollery的博客 1497

DOA估计算法从原理到仿真——CBF、Capon、MUSIC算法

从原理出发理解并实现经典的DOA估计算法

m0_55845774的博客 1万+

【linux】Linux基础知识学习笔记

命令:即Linux操作指令,是系统内置的程序。本体就是一个个的二进制可执行程序,和windows里的.exe是一个意思。通过which可以查具体位置。例如which cd。命令行:即Linux中断,提供命令执行页面。环境变量是操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键性信息,用以辅助系统运行。env命令即可查看当前系统中记录的环境变量环境变量是一种KeyValue型结构,即名称和值envLinux环境变量可以用户自行设置,其中分为:export 变量名=变量值。

xifan的博客 4377

TCP Reno/CUBIC 拥塞控制算法对比:从 Tahoe 到 BBR 的 4 种核心策略演进

本文深入解析了TCP拥塞控制算法的演进历程,从经典的Tahoe、Reno到现代的CUBIC和BBR,详细对比了4种核心策略的实现机制与性能差异。通过分析拥塞窗口、流量控制等关键技术,揭示了不同算法在高带宽延迟网络中的优化方向,为网络协议栈优化提供理论依据和实践指导。

weixin_33725239的博客 439

时间序列分析:ARCH、GARCH、TGARCH与DCC-GARCH波动率模型(含代码)

关注TGARCH模型和DCC-GARCH的应用,通过在沪深300和中证500指数上应用TGARCH和DCC-GARCH模型,揭示这两个指数之间的条件异方差及动态相关性的变化规律。

celiaweiwei的博客 1万+

linuxC学习笔记

• 注意: 0.0.0.0为任意地址,用户不会获得,网络地址会从1开始,主机地址也是从1开始分配给用户,127开头的IP地址都是本地环回地址,用户无网络时进程间通信,以255结尾的IP地址都是广播地址,用户也不会被分配到。• 当删除源文件时,软链接立马失效,当恢复(创建一个与之前源文件同名的新文件)源文件时,此时软链接文件会生效,但是此时指向的是最新的文件。• 称为符号链接文件,以源文件的所在路径创建的一个文件,意味着软链接文件存储的是指向源文件的一条路径,类似于Windows下的快捷方式。

lizhi035986的博客 264

保姆级教程:在Windows/Linux双系统下搞定Microsemi Libero SoC v11.8安装与白银版License激活

本文提供了一份详细的Microsemi Libero SoC v11.8在Windows/Linux双系统下的安装与白银版License激活指南。涵盖环境准备、安装流程、License跨平台配置及常见问题排查,帮助开发者高效搭建FPGA开发环境。

weixin_30603633的博客 419

Linux-C学习笔记

操作系统是管理和控制计算机硬件与软件资源的计算机程序,它是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。

qq_23196083的博客 168

Cadence OrCAD Capture 原理图中创建差分对约束的两种常用方法

本文介绍在原理图设计阶段,添加差分对的方法。

fydar的博客 3930

Oracle EBS 寄销/VMI(2)-->采购篇

上篇有一部分设置需要建BPA后,将BPA编号与批准的供应商相关联.     本篇主要是讲的内容:一揽子采购协议-->准标采购订单-->收接入库-->子库转移-->创建冲减通知-->'按接收开票' 自动开票程序 1. PO-->采购订单à采购订单 创建一揽子采购协议,确定物料

陈显平的专栏-Oracle EBS 1万+

linux操作系统下c语言编程入门

linux操作系统下c语言编程入门 整理编写:007xiong 原文:Hoyt等 (一)目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 7)Linux程序设计入门--线程操作

wjs1033的专栏 2598

SAP_MM模块通过CC11 创建物料版本

通过本文,我们了解了 SAP 的[SAP_MM模块通过CC11 创建物料版本]的基本概念和应用方法。当物料主数据、BOM(物料清单)、工艺路线等对象需要进行变更控制时,通过创建“版本”或“更改单”来记录、控制和追溯变更。创建完变更主记录(Change Number)后,可在物料主数据维护时引用它,从而创建物料版本化信息。,在其中可以定义物料、BOM、工艺路线等对象的变更版本信息,从而在系统中实现版本化的物料管理。

我小时候很黑的博客 814

Linux下C语言编程入门

linux操作系统下c语言编程入门 整理编写:007xiong 原文:Hoyt等  (一)目录介绍  1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 7)Lin

hanlin1985的专栏 3578

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Linux 操作系统 C 语言编程入门

Linux 操作系统 C 语言编程入门 目 录第一章 基础知识 ……………………………………………………………4 第二章 进程介绍 …………………………………………………………10 第三章 文件操作 …………………………………………………………17

nailwl 1852

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

linux系统下c语言编程的,linux操作系统下c语言编程入门--基础知识

Linux程序设计入门--基础知识Linux下C语言编程基础知识前言:这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容:源程序编译Makefile的编写程序库的链接程序的调试头文件和系统求助--------------------------------------------------------------------------------1....

weixin_35698867的博客 754

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Linux操作系统下C语言编程入门

linux操作系统下c语言编程入门 整理编写:007xiong 原文:Hoyt等 (一)目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5

马栏坡专栏 2009
上一篇: Android中Context详解 ---- 你所不知道的Context
下一篇: Intent匹配规则以及解析框架深入分析
qinjuning
博客等级 码龄18年 5288粉丝 43原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值