Linux下使用C语言编写wget工具linuxcwget
在LINUX系统中,我们可以用C语言编写wget工具来下载文件,包括Web、FTP和邮件协议。wget是一个免费的、便捷的如何快速看懂项目源码开源命令行工具,可以从Web服务器上快速且无需交互地下载文件。
首先,我们需要准备以下几个主要的步骤:
1.安装
使用GCC编译器,安装必要的库函数库,并下载wget源码:
$ sudo apt-get install build-essential
$ apt-get source wget
2.确定依赖关系
在编译wget前,应先检查所有编译器需求,如libssl,lzma等等:
$ apt-get build-dep wget
3.配置
接下来,我们进入到wget源码所在的目录,并运行配置命令:
$ cd wget-folder
$ ./configure
4.编译
设下完成,我们可以编译wget的源码:
$ make
5.安装
安装wget工具:
$ sudo make install
顺利完成安装后,我们就可以使用C语言编写的wget来获取文件:
$ wget /filename.ext
带你走近MISRA C:
随着软件定义汽车概念的兴起,汽车软件开发的工作量开始呈指数级增加,当前车载软件代码量已经达到1亿-3亿行。这是一个什么概念呢,相当于比Windows系统还高出一个数量级。觅元素解析源码据调查,大部分的车载软件都是使用C语言进行开发,因为C执行效率高、代码量小,因此在汽车的小型控制部件中被广泛使用。尽管C语言在嵌入式系统中如此流行,但仍有很多缺陷:
1. C是弱类型语言。在下面代码中,char类型和int类型是可以直接运算的,因为char类型会被提升为int,这就是C中的隐式类型转换,将精度较小的转换为大精度的,在这个意义上讲,它并不符合强类型语言的定义。
2.C相较于其他的语言有更多的操作符,因此其也有更多不同的操作符优先级,其中的大多数都不是能直观判断的,所以通常会被程序员误解。
3.C程序一般不为常见问题提供运行时检查,例如运算异常(如零除),溢出,91云播源码指针的有效性或者数组越界。
汽车工业软件可靠性协会(MISRA)在年发布了第一版针对汽车工业软件安全性的C语言编码规范---MISRA C,让程序员有规范可循。
从年发布的MISRA C:,只针对汽车制造业的嵌入式开发,到MISRA C:,已经开始扩大覆盖范围到其他高安全性系统。
MISRA C:包含条规则,其中Directives有条,Rules有条。
1.Dir 4.:动态内存分配不应被使用。
原理:任何库的动态内存分配和进程的释放都可能导致未定义的行为。
2.Rule .3:表达式的值不应分配给具有较窄基本类型或不同基本类型类别的对象。
原理:C语言允许程序员有相当大的自由度,并允许自动形成不同算术类型之间的赋值。然而,使用这些隐式转换可能会导致意外的结果,可能会丢失值、符号或精度。如MISRA基本类型模型所强制的,使用更强的类型可以降低这些问题发生的可能性。
MISRA C:的电脑游戏源码规则按照性质分为两类:指令(Directives)和规则(Rules)。规则有三种不同类别:”强制(Mandatory)”、”要求(Required)”和“建议(Advisory)”;其中具体结果如下图所示。
那么,在任何情况下都可以明确地说明该条代码违反了规则吗?
出于此问题,MISRA C:规则的Rules具有可判定性Decidable/Undecidable,他们的区分标准为是否能在任何情况下明确回答“该代码是否遵循了这条规则”?
要注意的是,可判定性并不适用于Directives规则。
Rules的分析范围分为Single Translation Unit/System:
Helix QAC与MISRA C:
很明显,MISRA C:规则就是为静态测试而生的。Perforce公司的静态分析工具Helix QAC,是汽车行业中主流的静态分析器,其开发团队是MISRA C&C++编码委员会的创始会员,也是MISRA C&C++委员会最具影响力的会员。Helix QAC具有业界领先的编码规范覆盖度,目前MISRA C:的编码规范覆盖度达到了%,而对MISRA C:的编码规范覆盖度已达到%。是嵌入式静态分析领域公认的行业领导及先驱。
下面以开源工程wget为例,演示一下Helix QAC是如何定位违反MISRA C:规则的代码。
诊断消息:“包含文件代码不受重复包含的保护”正是MISRAC:规则Dir 4.的映射,通过诊断消息开发人员就可以了解到代码违反MISRA C:规则的福利博客网站源码情况,从而对代码进行修改使其合规。
Rule 9.1:对象在初始化前不能被使用。
这里大家或许会疑惑,为什么同一个规则下会产生两种诊断消息呢?答案是:数据流分析。
数据流分析是Helix QAC的高级分析,Helix QAC通过内置的数据流分析器分析运行时的行为。数据流分析可以识别各种问题,包括可能指示编码错误的条件,以及可能导致程序崩溃的关键未定义行为。
我们可以看到图中的诊断消息和虽然都是Rule 9.1产生的,但是分成了Suspicious和Apparent两种。我们在代码中看一下这两条诊断消息的不同。
诊断消息的源码如下:
在行声明了数组saved_lengths,行对saved_lengths进行赋值操作,在行使用saved_lengths。但saved_lengths的赋值操作不一定会进行,因为该操作在for循环中进行,如果for循环没有达到执行条件导致并未执行,那么此时saved_lengths就没有初始化。所以此条诊断消息是Suspicious。
诊断消息源码如下:
可以看到,在行声明变量dt,但后面并未对dt进行初始化。所以此条诊断消息是Apparent。
由此可见Helix QAC数据流分析功能的强大。Helix QAC的数据流功能也在不断地更新,在即将到来的新版本.4中,数据流计划从Helix QAC引擎中分离出来,成为自己的组件。
在近期发布的最新版本Helix QAC .3中,引入了对微软Visual Studio 的支持,提供更广泛的编译器支持,以及对C++和C的升级语言支持。此外,此版本具有使用“qainject”自动生成 CCT 的功能,可简化构建理解和编译器设置。
作为Perforce公司的合作伙伴,北汇信息将为客户提供优质的静态代码测试工具和服务。更多Helix QAC相关内容:王牌代码静态测试工具Helix QAC .2 中的新增功能 - 知乎 (zhihu.com) 开发人员使用Helix QAC实现静态代码测试合规性的五大原因 - 知乎 (zhihu.com) 嵌入式系统和物联网中的软件安全 - 知乎 (zhihu.com) 企业级自动代码静态分析器Helix QAC--从应用层级保证代码质量和安全(一) - 知乎 (zhihu.com)
怎么在ubuntu安装python
在Ubuntu系统中安装Python有三种途径:使用官方的apt工具包安装,支持Python 2.7和3.4版本:
通过命令行输入:`sudo apt-get install python2.7` 和 `sudo apt-get install python3.4`
安装完成后,通过`python2.7 --version`和`python3.4 --version`验证安装。
通过PPA(个人软件包仓库)安装,以获取可能的最新版本:
首先安装python-software-properties:`sudo apt-get install python-software-properties`
然后添加PPA:`sudo add-apt-repository ppa:fkrull/deadsnakes`
更新源并安装Python 2.7:`sudo apt-get update` 和 `sudo apt-get install python2.7`
从源代码编译安装,适用于寻求最新稳定版本或特定需求的情况:
下载Python源代码:`wget -c /get/mongo-1.6.9.tgz
接着,使用tar命令解压缩下载的源码文件:
$ tar zxvf mongo-1.6.9.tgz
随后,进入解压缩后的目录:
$ cd mongo-1.6.9
运行phpize命令进行配置:
$ phpize
使用configure命令进行扩展配置:
$ ./configure
执行make命令编译源码:
$ make all
进行测试:
$ make test
最后,使用sudo命令进行安装:
$ sudo make install
在Ubuntu系统下完成PHP的mongodb扩展安装后,即可在PHP环境中使用mongodb数据库。确保系统环境配置正确,PHP版本与mongodb扩展兼容,方可顺利使用。
wget 命令行下载工具使用方法详解
wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上。它有以下功能和特点:
win环境下的wget.exe 下载: wget.exe 命令行下载工具
(1)支持断点下传功能;这一点,也是网络蚂蚁和FlashGet当年最大的卖点,现在,Wget也可以使用此功能,那些网络不是太好的用户可以放心了;
(2)同时支持FTP和HTTP下载方式;尽管现在大部分软件可以使用HTTP方式下载,但是,有些时候,仍然需要使用FTP方式下载软件;
(3)支持代理服务器;对安全强度很高的系统而言,一般不会将自己的系统直接暴露在互联网上,所以,支持代理是下载软件必须有的功能;
(4)设置方便简单;可能,习惯图形界面的用户已经不是太习惯命令行了,但是,命令行在设置上其实有更多的优点,最少,鼠标可以少点很多次,也不要担心是否错点鼠标;
(5)程序小,完全免费;程序小可以考虑不计,因为现在的硬盘实在太大了;完全免费就不得不考虑了,即使网络上有很多所谓的免费软件,但是,这些软件的广告却不是我们喜欢的;
wget虽然功能强大,但是使用起来还是比较简单的,基本的语法是:wget [参数列表] URL。下面就结合具体的例子来说明一下wget的用法。
1、下载整个plete/file
使用断点续传要求服务器支持断点续传。-t参数表示重试次数,例如需要重试次,那么就写-t ,如果设成-t 0,那么表示无穷次重试,直到连接成功。-T参数表示超时等待时间,例如-T ,表示等待秒连接不上就算超时。
3、批量下载。
如果有多个文件需要下载,那么可以生成一个文件,把每个文件的URL写一行,例如生成文件download.txt,然后用命令:wget -i download.txt
这样就会把download.txt里面列出的每个URL都下载下来。(如果列的是文件就下载文件,如果列的是网站,那么下载首页)
4、选择性的下载。
可以指定让wget只下载一类文件,或者不下载什么文件。例如:
wget -m --reject=gif /project/wine/Source/wine-1.7..tar.bz2
$ tar -xvf wine-1.7..tar.bz2 -C /tmp/
接下来,使用下列命令编译及安装Wine。
注:安装过程大概需要-分钟,这个时间由你的网络速度以及电脑硬件配置决定,在安装过程中需要root密码。
位系统
代码如下:
$cd wine-1.7./
$./tools/wineinstall
位系统
代码如下:
$ cd wine-1.7./
$ ./configure --enable-win
$ make
# make install
Ubuntu,Debian 与 Linux Mint
在Ubuntu系统下,你可以使用官方的PPA方便的安装最新的Wine开发版本。打开一个终端并使用sudo权限执行下列命令。
代码如下:
$ sudo add-apt-repository ppa:ubuntu-wine/ppa
$ sudo apt-get update
$ sudo apt-get install wine 1.7 winetricks
注:在写这篇文章时,只能获取1.7.,在官方的仓库中还没有更新到最新版本,但是当仓库更新到1.7.后,使用上面的指令可以安装最新的版本。(译者:为毛我看了版本号是1.6.2......)
安装成功后,你可以安装或运行任何windows应用或游戏了,示例如下:
代码如下:
$ wine notepad
$ wine notepad.exe
$ wine c://windows//notepad.exe
注:切记,这是一个开发版本,请勿在生产系统上安装它。建议这个版本仅作测试用。
2024-11-20 07:08
2024-11-20 06:49
2024-11-20 06:27
2024-11-20 05:47
2024-11-20 04:51