Linux应用开发

2023-10-29

1、为什么要学Linux?

使用标准C/C++ 编写运行在Linux上的应用程序
编写部署在Linux上的应用程序,如Python,Java web服务程序

2、Linux学习方向

2.1 学习路线

熟悉 Linux 系统,基本命令
安装 Linux 系统,学会基本操作,熟悉文件系统,shell 脚本以及常用命令。

了解程序开发过程
搭建开发环境,了解 Linux 上程序开发过程。
学会使用文本编辑工具 Vim,编译工具 gcc, as, 连接工具 ld, 调试工具 gdb, make 工具,会写 makefile。
用 C 语言实现并编译自己的测试程序。

尝试系统编程
试着在 Linux 上用 C 语言进行系统编程,
其中需要调用 Linux 系统库函数 (API)。
例如,实现一个需要进行网络通信、操作文件的多线程/进程程序。
以此深入了解 Linux 系统运行机制。

2.1 从事方向

运维,维护Linux服务器
应用开发,开发Linux应用程序
底层开发

应用开发自然是需要学习如何开发在Linux上运行的应用程序,如何定位Linux应用程序问题等等。

3、Linux应用开发学什么

Linux的学习很多会以命令为主,因而初学会觉得枯燥甚至疑惑
出于资源的考虑,绝大部分Linux服务器没有图形界面
命令行便于自动化,将一系列操作写入脚本,可代替手动操作

学习阶段:基本使用、开发调试、系统认识

第一阶段:基本使用

如何开关机、如何上网、如何打开命令行
如何使用命令行安装卸载软件、如何编辑文本
如何创建,移动,删除文件
如何查看文件内容,解压缩文件
……
这个阶段最难的就是从图形界面到命令行的转换。

第二阶段:开发调试

如何编写Linux应用程序、如何编译或者构建你的程序、如何运行你的程序、如何定位程序bug

第三阶段:系统认识

理解并践行一切皆文件
ELF文件,Linux主要可执行文件格式
Linux各大机制的基本原理,如进程调度,内存管理,虚拟内存,文件系统等,既然要写Linux应用程序,怎么能不了解它所在平台的主要机制呢?

4、怎么学?

关于第一阶段,你可以先定个小目标,例如一段时间内学会在Linux下进行你的日常活动(玩游戏就算了),例如编写文档,看视频等等。同时建议:
选择主流的发行版,如ubuntu,centos等,遇到问题时比较容易解决
在window下安装虚拟机,这样Linux环境就随你折腾了

使用apt-get或者yum安装或卸载软件
使用tar,unzip,zip,gz等解压缩命令安装包
了解运行环境,学会如何执行命令

**不过初期阶段建议抱着一个目的去学习,就是如何在Linux写一个完整的程序,**为了达到这个目的你需要学习

cd touch cp mv rm ls,find,切换目录,创建,复制,移动,删除,查看,查找等等

vi/vim 编写代码,这里有一个在线练习网站 https://www.openvim.com/
gcc编译代码,后期可能需要学习makefile,cmake等构建工具
版本管理,git也是当前必备的一个工具了,学习资料推荐pro git或者官方git教程
gdb调试,可以参考《GDB调试指南》
问题定位,除了观察最基本的打印之外,还需要知道,如何查看进程信息(ps),如何查看网络连接信息(ss,netstat),如何强制停止进程(kill -9)如何查看进程文件打开情况(lsof),如何多种姿势查看文本文件(cat,tail,more,less)等等。
脚本学习,学习Linux,就不得不学习shell脚本了,它在很多时候能毫无抱怨地帮你做事,前提是你会调教。《Linux命令行与shell脚本编程大全》也是调教教程之一。这里也有一些《必备的shell知识》

5、书籍推荐

注意事项

开发Linux应用程序并不一定要在Linux下编写代码,你可以选择利用samba等工具在windows和linux之间共享文件,然后再在windows下熟悉的工具中或者你认为比较强大合适的工具中编写代码,在Linux下进行编译调试即可。当然你也可以选择Linux下的IDE,或者将vim调教一下也是可以的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux应用开发 的相关文章

随机推荐

  • mybatis 配置打印sql

    1 在mybatis config xml中配置加一个setting 2 如果是spring集成mybatis的话 在sqlSessionFactory配置好configLocation属性 3 在日志文件中配置如下 DEBUG
  • 强化对信息安全事件的预防

    声明 本文是学习信息技术 安全技术 信息安全事件管理 第1部分 事件管理原理 而整理的学习笔记 分享出来希望更多人受益 如果存在侵权请及时联系我们 范围 本部分提出了信息安全事件管理的基本概念和过程阶段 并将这些概念与结构化方法的原理相结合
  • spring常用注解

    1 Controller 在SpringMVC 中 控制器Controller 负责处理由DispatcherServlet 分发的请求 它把用户请求的数据经过业务处理层处理之后封装成一个Model 然后再把该Model 返回给对应的Vie
  • mysql-5.6.16-win32免安装配置方法

    转载自 http blog csdn net fzhmoive article details 20042437 http blog csdn net leili0806 article details 8573636 1 下载MySQL
  • 口袋进化服务器维护,《口袋进化》新手指引.新手指导

    第一只精灵 你做好成为一名训练家的准备了么 作为一枚纯纯的萌新 在刚接触时 建议根据游戏提供的引导 来逐步熟悉基本玩法和养成体系 除此之外 别忘了阅读新手FAQ 在这里 为大家总结了一些新手常见的问题 方便大家享受游戏乐趣 Q 怎么升级 A
  • 编译protobuf静态库依赖顺序问题

    在项目中要加入protobuf协议支持 在编译成功生成程序包动态库后 发现启动运行报错 未定义的protobuf符号xxx等等 用ldd查看so文件 发现确实提示了未找到 大致的makefile文件如下 CXX g CFLAGS g Wal
  • 前后端分离命名规范:JSON下划线,对象小驼峰,以及Jackson常用配置

    在application yml中添加配置即可 spring jackson配置 jackson json和对象的命名转换 property naming strategy SNAKE CASE date format yyyy MM dd
  • QML下如何实现邻近区域无遮挡文字滚动

    在一些嵌入式显示设备中需要实现文字滚动功能 而利用QML是实现文字的滚动大家经常使用的功能 也非常简单 本文主要讲解一下如何避免2个邻近区域的文字滚动重叠问题 大家有没有按照如下的方式来设置文本的滚动 Window visible true
  • 机器学习流程是什么?简述机器学习流程!

    1 抽象成数学问题 明确问题是进行机器学习的第一步 机器学习的训练过程通常都是一件非常耗时的事情 胡乱尝试时间成本是非常高的 这里的抽象成数学问题 指的明确我们可以获得什么样的数据 抽象出的问题 是一个分类还是回归或者是聚类的问题 2 获取
  • 【Linux】深入理解文件缓冲区

    文章目录 问题引入 如何理解缓冲区 缓冲区刷新策略 问题解释 模拟一个文件缓冲区 问题引入 首先看一段代码 include
  • Unity3D -- Hit UFO adapter模式

    目录 一 游戏内容 二 UML图设计 三 游戏的实现 1 DiskFactory 2 FlyAction 3 SSActionManager 4 PhyUFOFlyAction 5 PhyFlyActionManager 6 ISceneC
  • 2017-百度-安全岗笔试

    2017 baidu spring 1 请回答如下端口默认对应的服务 以及在渗透测试过程中我们可以从哪些角度考虑其安全问题 端口 21 22 873 1433 3306 6379 11211 端口 服务 说明 21 FTP 匿名访问 弱口令
  • STM32内部FLASH读写-通用

    转https m baidu com from 844b bd page type 1 ssid 0 uid 0 pu usm 401 2Csz 401320 2001 2Cta 40iphone 1 10 1 3 602 baiduid
  • 基于vite搭建一个react移动端脚手架

    基于移动端的配置 vite官网 优点 光速启动 热模块替换 按需编译 脚手架功能 antd mobile移动端组件 axios网络数据交互 hox状态管理 react router dom路由管理 postcss px to viewpor
  • mybatis批量更新操作

    批量更新第一种方式 update IVMP DEVICE TYPE AISLE set AISLE TYPE
  • SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers

    https arxiv org pdf 2105 15203 pdf 文章提出了SegFormer encoder由金字塔Transformer组成 不使用位置编码 而是使用一个3x3的逐深度卷积 decoder使用了简单的MLP 因为分类
  • 搞懂oauth2.0授权码模式

    OAuth 2 0 是什么 举一个电商的场景 你估计更有感觉 假如你是一个卖家 在京东商城开了一个店铺 日常运营中你要将订单打印出来以便给用户发货 但打印这事儿也挺繁琐的 之前你总是手工操作 后来发现有个叫 小兔 的第三方软件 它可以帮你高
  • 解决字体文件Font跨域权限问题

    问题描述 Font from origin http trunk supply chain com has been blocked from loading by Cross Origin Resource Sharing policy
  • 腾讯云技术专家卢萌凯手把手教你Demo一个人脸识别程序!

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文来自腾讯云技术沙龙 本次沙龙主题为Serverless架构开发与SCF部署实践 卢萌凯 毕业于东南大学 曾就职于华为 熟悉云行业解决方案 目前负责腾讯云中间件产品及无服务器云函数
  • Linux应用开发

    1 为什么要学Linux 使用标准C C 编写运行在Linux上的应用程序 编写部署在Linux上的应用程序 如Python Java web服务程序 2 Linux学习方向 2 1 学习路线 熟悉 Linux 系统 基本命令 安装 Lin