首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Makefile经典教程(掌握这些足够)

makefile很重要       什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

02

FFmpeg开发笔记(一)搭建Linux系统的开发环境

对于初学者来说,如何搭建FFmpeg的开发环境是个不小的拦路虎,因为FFmpeg用到了许多第三方开发包,所以要先编译这些第三方源码,之后才能给FFmpeg集成编译好的第三方库。 不过考虑到刚开始仅仅调用FFmpeg的API,不会马上去改FFmpeg的源码,因此只要给系统安装编译好的FFmpeg动态库,即可着手编写简单的FFmpeg程序。比如这个网站https://github.com/BtbN/FFmpeg-Builds/releases提供了已经编译通过的FFmpeg开发包,囊括Linux、Windows等系统环境的开发版本。对该网站提供的Linux版FFmpeg安装包而言,需要事先安装不低于2.22版本的glibc库,否则编译FFmpeg程序会报错“undefined reference to `_ZGVdN4vv_pow@GLIBC_2.22'”。下面介绍在Linux系统安装已编译的FFmpeg详细步骤。

02

linux下源码安装

源码安装:配置(configure)、编译(make)、安装(make install),所有操作中间错误可以忽略,最后段末尾统一报错。 ####1.配置  configure:生成Makefile的shell脚本  文件结构如下:   <文件夹>     |-configure.in     |-Makefile.am     |-acconfig.h     |-<源码文件>       |-tt.c       |-qq.c       |-qq.h       |-Makefile.am  其中configure.in作为./configure的配置输入;makefile.am通过automake生成makefile.in再由./configure生成makefile;acconfig.h由autoheader生成config.h.in再由./configure生成config.h  configure.h使用autoconf和automake命令的shell脚本,可以通过autoscan自动生成或手写  acconfig.h包含了configure.in中未定义的宏 autoscan–>autoheader–>aclocal–>automake|autoconf

04

命令帮助类基础命令

常用命令缩写 缩写 | 全称 | 说明 — | — | — apt | Advanced Packaging Tool | 是Debian Linux发行版中的APT软件包管理工具。一般配合apt-get或者apt-update awk | Aho Weiberger and Kernighan | Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。一种编程语言,用于在linux/unix下对文本和数据进行处理。 bash | Bourne Again SHell | 一种shell bg | BackGround | 用于将作业放到后台运行,使前台可以执行其他任务。该命令的运行效果与在指令后面添加符号&的效果是相同的,都是将其放到系统后台执行。 cal | CALendar | 用于显示当前日历,或者指定日期的日历。 cat | CATenate | “连接”,连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于下的type命令。 chgrp | CHange GRouP | 用来改变文件或目录所属的用户组。 chmod | CHange MODe | 用来变更文件或目录的权限。 chown | CHange OWNer | 改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。 cd | Change Directory | 切换工作目录 cp | CoPy | 将一个或多个源文件或者目录复制到指定的目的文件或目录 dd | Data Description | 用于复制文件并对原文件的内容进行转换和格式化处理。 df | Disk Free | 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。 du | Disk Usage | 查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。 diff | DIFFerence | 在最简单的情况下,比较给定的两个文件的不同。 dpkg | Debian PacKaGe | Debian Linux系统用来安装、创建和管理软件包的实用工具。 ed | EDitor | 单行纯文本编辑器,它有命令模式(command mode)和输入模式(input mode)两种工作模式。 emacs | Editor MACroS | 是由GNU组织的创始人Richard Stallman开发的一个功能强大的全屏文本编辑器,它支持多种编程语言,具有很多优良的特性。(备注:vim大法好!!!) env | ENVironment | 用于显示系统中已存在的环境变量,以及在定义的环境中执行指令。 exec | EXECute | 用于调用并执行指令的命令。 fsck | File System Consistency checK, or fuck | 用于检查并且试图修复文件系统中的错误。 gawk | Gnu Aho Weiberger and Kernighan | grep | Gnu Regular Expression Print | (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 grub | GRand Unified Bootloader | 多重引导程序grub的命令行shell工具。 ifconfig | InterFace CONFIGuration | 被用于配置和显示Linux内核中网络接口的网络参数。 init | INITialization | Linux下的进程初始化工具 insmod | INStall Module | 用于将给定的模块加载到内核中。 ln | LiNk | 用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用”-s”选项。 ls | LiSt | 显示目标列表 lsmod | LiSt Module | 用于显示已经加载到内核中的模块的状态信息。 man | MANual | Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。一般戏称有问题找男人。。。 mkdir | MaKe DIRectory | 创建目录 mkfs | MaKe FileSystem | 用于在设备上(通常为硬盘)创建Linux文件系统。 mv | MoVe | 对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。 nano | Nano’s

02

Python学习 Day 1-简介 安装 Hello world

Python(英语发音:/ˈpaɪθən/), 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议[1] 。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

01
领券