2022-12-04 00:21来源:m.sf1369.com作者:宇宇
Linux 命令详解(三)./configure、make、make install 命令
这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤
一、基本信息
1、./configure 是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。
2、make 是用来编译的,它从Makefile中读取指令,然后编译。
3、make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。
注意:AUTOMAKE和AUTOCONF是非常有用的用来发布C程序的东西。
二、详细解释
1、configure命令
这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:./configure –prefix=/usr 意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。同时一些软件的配置文件你可以通过指定 –sys-config= 参数进行设定。有一些软件还可以加上 –with、–enable、–without、–disable 等等参数对编译加以控制,你可以通过允许 ./configure –help 察看详细的说明帮助。
2、make
这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。如果 在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。
可能遇到的错误:make *** 没有指明目标并且找不到 makefile。 停止。问题很明了,没有Makefile,怎么办,原来是要先./configure 一下,再make。
3、make insatll
这条命令来进行安装(当然有些软件需要先运行 make check 或 make test 来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)。
三、扩展说明
Linux的用户可能知道,在Linux下安装一个应用程序时,一般先运行脚本configure,然后用make来编译源程序,在运行make install,最后运行make clean删除一些临时文件。使用上述三个自动工具,就可以生成configure脚本。运行configure脚本,就可以生成Makefile文件,然后就可以运行make、make install和make clean。
configure是一个shell脚本,它可以自动设定源程序以符合各种不同平台上Unix系统的特性,并且根据系统叁数及环境产生合适的Makefile文件或是C的头文件(header file),让源程序可以很方便地在这些不同的平台上被编译连接。
这时,就可运行configure脚本了,运行configure脚本,就可产生出符合GNU规范的Makefile文件了: $ ./configure
到此时,就可以运行make进行编译,在运行make install进行安装了,最后运行make clean删除临时文件。
$ make
$ make install (注:运行这个要有足够的权限)
$ make clean
利用configure所产生的Makefile文件有几个预设的目标可供使用,其中几个重要的简述如下:
make all:产生我们设定的目标,即此范例中的可执行文件。只打make也可以,此时会开始编译原始码,然后连结,并且产生可执行文件。
make clean:清除编译产生的可执行文件及目标文件(object file,*.o)。
make distclean:除了清除可执行文件和目标文件外,把configure所产生的Makefile也清除掉。
make install:将程序安装至系统中。如果原始码编译无误,且执行结果正确,便可以把程序安装至系统预设的可执行文件存放路径。如果用bin_PROGRAMS宏的话,程序会被安装至/usr/local/bin这个目录。
make dist:将程序和相关的档案包装成一个压缩文件以供发布。执行完在目录下会产生一个以PACKAGE-VERSION.tar.gz为名称的文件。 PACKAGE和VERSION这两个变数是根据configure.in文件中AM_INIT_AUTOMAKE(PACKAGE,VERSION)的定义。在此范例中会产生test-1.0.tar.gz的档案。
make distcheck:和make dist类似,但是加入检查包装后的压缩文件是否正常。这个目标除了把程序和相关文件包装成tar.gz文件外,还会自动把这个压缩文件解开,执行 configure,并且进行make all 的动作,确认编译无误后,会显示这个tar.gz文件可供发布了。这个检查非常有用,检查过关的包,基本上可以给任何一个具备GNU开发环境-的人去重新编译。
输入 perl test.pl 然后就能执行了。其中test.pl是你所要运行的文件的名称用命令指示符则说不是内部或外部的命令。这个说明安装没有自动把perl的文件路径自动添加到环境变量中去。具体方法:右击我的电脑--属性--高级--环境变量--在系统变量部分--双击path--在最后添加你perl的安装路径。例如;C:\Perl\bin 另外一种方法,你也可以安装activeperl 5.10.0 它会自动添加环境变量
脚本语言:脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。
语言分类:
1.
Shell脚本:此类脚本用于自动化工作控制,即启动和控制系统程序的行为。大多的脚本语言解释器也同时是命令行界面,如Unix shell和MS-DOS COMMAND.COM。其他如AppleScript,可以为系统增加脚本环境,但没有命令行界面。具体分类有:
4NT
AppleScript
ARexx (Amiga Rexx)
bash
csh
DCL
JCL
ksh
Cmd.exe batch (Windows, OS/2)
Command.com batch (DOS)
REXX
tcsh
sh
Winbatch
Windows PowerShell
Windows Script Host
zsh
2.
GUI脚本:GUI出现带来一种专业的控制计算机的脚本语言。它在用户和图形界面,菜单,按钮等之间互动。它经常用来自动化重复性动作,或设置一个标准状态。理论上它可以用来控制运行于基于GUI的计算机上的所有应用程序,但实际上这些语言是否被支持还要看应用程序和操作系统本身。当通过键盘进行互动时,这些语言也被称为宏语言。
具体分类有:
AutoHotkey
AutoIt
Expect
3.
应用程序定制:许多大型的应用程序都包括根据用户需求而定制的惯用脚本语言。同样地,许多电脑游戏系统使用一种自定义脚本语言来表现NPC(non-player character,non-playable character,non-player class)和游戏环境的预编程动作。此类语言通常是为一个单独的应用程序所设计,虽然它们貌似一些通用语言(如QuakeC, modeled after C),但它们有自定义的功能。具体分类:
Action Code Script
ActionScript
AutoLISP
BlobbieScript
Emacs Lisp
Game Maker Language
HyperTalk
IPTSCRAE
IRC script
Lingo
Maya Embedded Language
mIRC script
NWscript
QuakeC
UnrealScript
Visual Basic for Applications
VBScript
ZZT-oop
4.
web编程脚本:应用程序定制的脚本语言中有一种重要的类别,用于提供WEB页面的自定义功能。它专业处理互联网通信,使用网页浏览器作为用户界面。当然,大多现代WEB编程语言都比较强大可以做一些通用编程。具体分类:
ColdFusion (Application Server)
Lasso
Miva
SMX
IPTSCRAE-一些网络开发团队用于创建论坛的工具
5.
文本处理语言:处理基于文本的记录是脚本语言最早的用处之一。如Unix's awk最早是设计来帮助系统管理员处理调用UNIX基于文本的配置和LOG文件。PERL最早是用来产生报告的,现在它已经成了全面成熟的语言。
具体分类:
Awk
Perl
sed
XSLT
6.
通用动态语言:一些语言,比如Perl,从一门脚本语言发展成了更通用的编程语言。由于“解释执行,内存管理,动态”等特性,它们仍被称为脚本语言。但它们已经用于应用程序编写,用户也不把它们看作脚本语言。
APL
Dao
Dylan
Groovy
Lua
MUMPS (M)
newLISP
Nuva
Perl
PHP
Python
Ruby
Scheme
Smalltalk
SuperCard
Tcl (Tool command language)
7.
程序语言:少数的语言被设计通过嵌入应用程序来取代应用程序定制的脚本语言。开发者(如使用C等其它系统语言)包入使脚本语言可以控制应用程序的hook。这些语言和应用程序定制的脚本语言是同种用途,但优点在于可以在应用程序之间传递一些技能。
具体分类:
Ch (C/C++ interpreter)
Dao
ECMAScript 亦称 DMDScript, JavaScript, JScript
GameMonkeyScript
Guile
ICI
Lua
RBScript (REALbasic Script)
Squirrel
Tcl
Z-Script
8.
JavaScript直到现在仍然是网页浏览器内的主要编程语言,它的ECMAScript标准化保证了它成为流行的通用嵌入性语言。Tcl作为一种扩展性语言而创建,但更多地被用作通用性语言,就如同Python, Perl, Ruby一样。Q语言是在VBScript的基础上发展起来,专用于按键精灵系列产品,成为一门更接近“汉语”习惯的脚本语言。
BeanShell (scripting for Java)
CobolScript
Escapade (server side scripting)
Euphoria
F-Script
Ferite
Groovy
Gui4Cli
Io
KiXtart
Mondrian
Object REXX
Pike
Pliant
REBOL
ScriptBasic
Shorthand Language
Simkin
Sleep
StepTalk
Visual DialogScript
1. Visual Studio Code
Visual Studio Code (简称 VS Code)是由微软研发的一款免费的、轻量级的Web集成开发环境,且开源的跨平台文本(代码)编辑器,能运行在Linux、Mac 、Windows系统上。在智能提示变量类型,函数定义,模块方面继承了visio studio的优秀传统,在断点调试上也有不错的表现。
推荐指数:★★★★★
下载地址:Visual Studio Code
最新版本:1.32
VSCode是微软2017年推出的一个轻量但功能强大的源代码编辑器,最新版本是1.32,而且可用于多平台(微软现在对开源的态度还是不错的)。它内置了对JavaScript,TypeScript和Node.js的支持并且具有丰富的其它语言和扩展的支持,功能超级强大。
我是主搞dotnet的同时兼Java,VS可以毫不夸张的说是最好用的一款IDE,因此这个界面风格和使用方式很喜欢,而且提供强大的扩展,几乎在简单的代码管理时不用打开VS了;版本更新很及时,功能丰富且强大。而且官网提供了丰富的说明文档和视频等支持。
智能感知功能
VS Code IntelliSense功能由语言服务提供支持。如果语言服务知道可能的完成,则会在您键入时弹出IntelliSense建议。如果继续键入字符,则会过滤成员列表(变量,方法等),以仅包含包含键入字符的成员。按Tab或Enter将插入所选成员。
VS Code的智能感知提供了非常有用的语法高亮器,同时为变量类型,方法定义和模块引入提供了自动补全功能。而且还可以在设置中(settings.json)自定义IntelliSense。我们可以通过键入Ctrl + Space或键入触发器字符在编辑器窗口中触发IntelliSense 。
VS Code的智能感知提供JavaScript,TypeScript,JSON,HTML,CSS,SCSS等的支持。VS Code支持任何编程语言的基于单词的完成,也可以通过安装语言扩展来配置为具有更丰富的IntelliSense。
断点调试
代码调试是程序开发中一个必不可少的功能,能够快速帮助我们直观的获取信息。VS Code具有对Node.js运行时的内置调试支持,可以调试JavaScript,TypeScript以及任何其他转换为JavaScript的语言。对于调试其他语言和运行时环境,可以安装Debuggers 扩展或者安装其他调试器来辅助完成。
版本管理
Visual Studio Code集成了源代码控制,并包含了内置的Git支持。其他源代码控制提供程序可通过VS Code Marketplace上的扩展获得。
2. Notepad++
Notepad++ 是一款非常有特色的编辑器,软件小巧高效,支持27种编程语言,通吃C,C++ ,Java ,C#, XML, HTML, PHP,JS 等。是开源软件,可以免费使用,同时也支持各类流行的计算机编程语言。编辑器可以运行在微软的windows系统环境下,它的使用是受GPL许可证保护的,支持的语言:C、C++、Java、C#、XML、HTML、PHP、Javascript。
推荐指数:★★★★☆
下载地址:Notepad++
最新版本:7.6.3
Notepad++也是一款非常小巧好用而且功能强大的编辑器,而且开源免费。支持很多种编程语言,对应相关的编程的时候可以进行相互的转换,很方便。只需要在“菜单栏”>“语言”就可以选择自己需要的编程语言。同时也支持语法高亮,代码折叠、自动补全以及宏等功能,可定制性也非常强大。
Notepad++同样支持代码高亮、和自动提示补全功能,不同的语言需要根据自己使用的语言在菜单栏选择,稍显麻烦,Notepad++的代码折叠功能也很好用,总的来说是一款不错的编辑器,但是在易用性上来说比VSCODE还是有不小的距离。
3. Notepad2
Notepad2是一个小巧、快速的替代微软记事本的软件,界面华丽,功能强大,免安装。我实在找不出微软的记事本还能留下来的理由。自定义语法高亮,支持HTML, XML, CSS, JavaScript, VBScript, ASP, PHP, CSS, Perl/CGI, C/C++, C#, Java, VB, Pascal, Assembler, SQL, Python, NSIS, INI, REG, INF, BAT, DIFF, Ruby等众多文件。
推荐指数:★★★☆☆
下载地址:Notepad2
最新版本:
Notepad2更像是系统自带记事本的增强版,他也是一个相当优秀的轻量级文本编辑器,软件开源,具有很多特色功能,具有显示行号、内建大部分主流程序语法的高亮度显示、改变背景颜色、支持Unicode与UTF-8和行号显示等,如果你想找一个记事本的替代方案,那么Notepad2是个不错的选择。
4. UltraEdit
UltraEdit 是一套功能强大的文本编辑器,可以编辑文本、十六进制、ASCII 码,完全可以取代记事本(如果电脑配置足够强大),内建英文单字检查、C++ 及 VB 指令突显,可同时编辑多个文件,而且即使开启很大的文件速度也不会慢。
推荐指数:★★★★☆
下载地址:UltraEdit
最新版本:v25.20
UltraEdit是一个文本、HTML 和十六进制编辑器,同时也是高级 PHP、Perl、Java 和 JavaScript 程序编辑器,最新版本23.2。同样支持代码高亮、代码折叠。可以对基于磁盘的文本编辑和大文件处理 - 支持超过 4GB 的文件,即使是数兆字节的文件也只占用极少的内存。同时内置 FTP 客户端以访问 FTP 服务器,可设置多个账户,并自动登录和保存。缺点就是收费的,价格有点贵。
自定义主题和布局
UltraEdit支持用户自定义主题和布局,可以通过修改主题或从头开始创建新主题与其他用户分享。
集成的FTP,SSH和Telnet
无论你是需要对服务器上的文件进行快速编辑还是上传大量代码库,UltraEdit的集成FTP功能和SSH / Telnet都可以轻松处理远程文件,并通过单个功能强大的应用程序与服务器进行交互。
HTML / Markdown实时预览
UltraEdit可以在编辑时动态查看呈现的HTML或Markdown更改。双击预览中的元素以跳转到源中的定义。还可以使用Github Flavored Markdown(GFM)代码突出显示和兼容性。
列模式
当水平编辑不够好时,可以使用列模式。使用列模式可以在文档中的任何位置沿Y轴直观地进行编辑。
5. VIM
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。Vim普遍被推崇为类Vi编辑器中最好的一个。
推荐指数:★★★★☆
下载地址:VIM
最新版本:8.1
VIM广泛使用于UNIX或者LINUX系统中,他的最大特色是完全使用键盘命令进行编辑,脱离了鼠标操作虽然使得入门变得困难,但上手之后键盘流的各种巧妙组合操作,能够给工作带来极为大幅的效率提升,但是需要记住很多复杂的快捷键,另外你的脑和手得能协调且跟得上。
原来我们这里外聘的一位从日本回来的顶尖Coder就是只用VIM,快捷键用的飞快。
6. Emacs
EMACS,即Editor MACroS(编辑器宏)的缩写,最初由Richard Stallman于1975年在MIT协同Guy Steele共同完成。这一创意的灵感来源于TECMAC和TMACS,它们是由Guy Steele、Dave Moon、Richard Greenblatt、Charles Frankston等人编写的宏文本编辑器。
推荐指数:★★★★☆
下载地址:Emacs
最新版本:26.1
Emacs和VIM类似,具有内置的宏功能以及强大的键盘命令,他能做的事情非常多,功能非常强大,能够集合整个开发环境并调试程序。Emacs支持对多种文字的文本编辑、跨平台,是深受Coder喜欢的一款编辑器。有多个发行版,其中最流行的是GNU Emacs和XEmacs,它们是跨平台、完全免费并且开源。
Emacs在我们这里用苹果电脑的基本上都是用的这一款编辑器,但是在我的劝说下也有不少转移到VSCode了。
7. Sublime Text
Sublime Text 是一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用),也是HTML和散文先进的文本编辑器。Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的Vim。
推荐指数:★★★★☆
下载地址:Sublime Text
最新版本:3.1.1
Sublime Text具有漂亮的用户界面和强大的功能,支持多种编程语言的语法高亮、拥有优秀的代码自动完成功能。还拥有代码片段的功能,可以将常用的代码片段保存起来,在需要时随时调用。支持 VIM 模式,可以使用Vim模式下的多数命令;同时具有良好的扩展能力和完全开放的用户自定义配置,功能丰富的快捷命令等。
Sublime Text同样支持丰富的插件扩展,例如:MarkDown Editing、SublimeREPL、Javascript-API-Completions、还有比较有意思能记录你Code时间的WakaTime 等等。
8. EditPlus
EditPlus是一款小巧但是功能强大的可处理文本、HTML和程序语言的Windows编辑器,你甚至可以通过设置用户工具将其作为C,Java,Php等等语言的一个简单的IDE。拥有无限制的撤消与重做、英文拼字检查、自动换行、列数标记、搜寻取代、同时编辑多文件、全屏幕浏览功能。而它还有一个好用的功能,就是它有监视剪贴板的功能,同步于剪贴板可自动粘贴进 EditPlus 的窗口中省去粘贴的步骤。
推荐指数:★★★☆☆
下载地址:EditPlus
最新版本:5.1.2066
EditPlus和notepad++类似,能够提供文本、HTML以及其他程序语言编辑的功能;界面也相当的简便快捷,支持多标签,可以轻松编辑多个文档。editplus 原生支持FTP,而且连接很简单, 可视化做的也很人性化。
Linux下perl文件的执行#! /usr/bin/perl
第一个“#”表示是这一行是注释
第二个“!”表示这一行不是普通注释,而是解释器路径的声明行
后面的“/usr/bin/perl”是perl解释器的安装路径,也有可能是:“/usr/local/bin/perl”,如果那个不行,就换这个。
这样修改后,文件就是这个模样:
#!/usr/bin/perl
#test.pl
print "test message! \n";
然后,给文件加上可执行的属性:
$ chmod 755 test.pl 或者 $ chmod +x test.pl
这两个命令用哪一个都可以。
现在执行吧: $ ./test.pl
perl2exe编译*.pl文件为*.exe文件很好,一般的*.pl文件编译后有几百K,比*.pl文件大很多,运行时候占3M左右的内存,速度很快。
但是如果用C++或者DELPHI编写个同样大小的*.EXE文件绝对会更大,运行时占用的内存也更大,速度其实差不多。
我编写了一个我们公司内部网络上使用的及时信息工具,服务器部分最开始我用DELPHI写的。
后来我换为FreeBSD的服务器,用perl重新写了服务器,效率很好。
最后没有多余的机器,必须在我工作的PC机器上安装服务器,我就用perl2exe编译为exe使用,各方面的性能都不比DELPHI版本的差。
编译后生成exe的文件,如果需要生成dll文件,需要对原文件进行修改的。
1.新建文件命名为file.pl;
2.点击右键,选择打开方式(勾选永远以该方式打开文件)-----选择perl\bin\perl5.003.exe(假设你安装的是5.003版本).
3.打开window命令行:开始\运行\输入cmd,回车4.cd 到perl所在路径,执行file.pl当然你要先有perl的脚本噢
redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
redis是一个key-value存储系统。
和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set--有序集合)和hash(哈希类型)。
这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。
与memcached一样,为了保证效率,数据都是缓存在内存中。
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
redis是一个高性能的key-value数据库。
redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。
redis提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
用法:
1、make:
这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。
如果 在 make 过程中出现 error ,就要记下错误代码(注意不仅仅是最后一行),然后可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址)。或者系统少了一些依赖库等,这些需要自己仔细研究错误代码。
make 的作用是开始进行源代码编译,以及一些功能的提供,这些功能由他的 Makefile 设置文件提供相关的功能。
比如 make install 一般表示进行安装,make uninstall 是卸载,不加参数就是默认的进行源代码编译。
make 是 Linux 开发套件里面自动化编译的一个控制程序,他通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行某些需要的程序进行编译的程序。
一般情况下,他所使用的 Makefile 控制代码,由 configure 这个设置脚本根据给定的参数和系统环境生成。
其实没什么难度,分开看就能看懂。
——运行结果——
循环接受用户输入,每当用户输入一个质数,打印这个质数。
——参数——
lne是perl的参数,效果是:perl接收你的键盘输入,将你的输入赋值给$_,执行后面的perl语句,输出一个换行,然后等待接收下一个输入。
——perl语句——
x 字符串重复
若$_是一个正整数,1x$_就是由$_个字符1组成的字符串;否则它就是一个空字符串(大致如此)。
所以1x$_是包含若干个字符1的字符串。
=~ 绑定(匹配正则表达式)
用1x$_匹配后面的正则表达式,返回真或假。
若$_是质数,返回假。
|| 或 (短路的)
利用perl的短路特性,若||前面是真,就什么都不做(短路);若是假,就执行||后面的语句,即打印$_。
若$_是质数,打印$_
——正则表达式——
^ 匹配字符串开头$ 匹配字符串结尾用它们开始和结束的表达式会匹配整个字符串,而不是字符串的一部分。| 或
整个表达式匹配:一个数字1 、空字符串或合数个字符1。
即
非质数个字符1的字符串。
——匹配字符1或空字符串——
?表示前面的字符可有可无,所以1?匹配一个数字1或者空字符串。
——匹配合数个字符1——
?表示前面的符号是不贪婪的,影响性能,这暂时不重要。()表示将其中内容分组。
+表示前面的内容出现至少一次
所以1+匹配一个或更多1。所以11+匹配至少两个1
\1匹配和分组1完全一样的内容
+表示前面的内容出现至少一次所以\1+匹配至少一个分组1所以()\1+匹配至少两个分组1。
(觉得复杂就拉到后面看举例)
所以后半段表达式匹配的是一串数字1它们可以被分为数量相同的小组至少2组,每组至少包含2个1。例如2x23x25x1008611也就是说,合数个字符1。
——补充——
最后的
多余,没必要写。
——举例—
表达式试图匹配11111分组(11),重复分组11,剩下1$不能匹配,失败;接下来试试分组(111),剩下11$不能匹配,失败;(1111)同上,失败;(11111)同上,失败。匹配失败。
表达式试图匹配111111111分组(11),重复分组11,11,11,剩下1$不能匹配,失败;分组(111),重复分组111,111,刚好到达字符串结尾$,匹配成功。
—————影响性能的?—————
如果不写第二个?
表达式试图匹配11111
分组(11111),重复分组……失败;
分组(1111),同上,失败;
分组(111),同上,失败;
分组(11),重复分组11,剩下1$不能匹配,失败;
匹配失败。
这样会反复多次试错导致性能下降,数字越大越明显。