当前位置:首页 » 文件管理 » gnuftp

gnuftp

发布时间: 2025-05-29 14:53:29

‘壹’ Binutils是什么

目前(2009.9)最新版本为:Binutils (2.19):
ftp://ftp.gnu.org/gnu/binutils/Binutils的内容
Binutils 是一组开发工具,包括连接器,汇编器和其他用于目标文件和档案的工具。安装下列程序: addr2line, ar, as, c++filt, gprof, ld, nm, obj, objmp, ranlib, readelf, size, strings 和 strip安装下列库文件: libiberty.a, libbfd.[a,so] 和 libopcodes.[a,so] 简短说明
addr2line 把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。ar 建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。as 主要用来编译GNU C编译器gcc输出的汇编文件,产生的目标文件由连接器ld连接。c++filt 连接器使用它来过滤 C++ 和 Java 符号,防止重载函数冲突。gprof 显示程序调用段的各种数据。ld 是连接器,它把一些目标和归档文件结合在一起,重定位数据,并链接符号引用。通常,建立一个新编译程序的最后一步就是调用ld。nm 列出目标文件中的符号。obj把一种目标文件中的内容复制到另一种类型的目标文件中.objmp 显示一个或者更多目标文件的信息。显示一个或者更多目标文件的信息。使用选项来控制其显示的信息。它所显示的信息通常只有编写编译工具的人才感兴趣。ranlib 产生归档文件索引,并将其保存到这个归档文件中。在索引中列出了归档文件各成员所定义的可重分配目标文件。readelf 显示ebf格式可执行文件的信息。size 列出目标文件每一段的大小以及总体的大小。默认情况下,对于每个目标文件或者一个归档文件中的每个模块只产生一行输出。strings 打印某个文件的可打印字符串,这些字符串最少4个字符长,也可以使用选项-n设置字符串的最小长度。默认情况下,它只打印目标文件初始化和可加载段中的可打印字符;对于其它类型的文件它打印整个文件的可打印字符,这个程序对于了解非文本文件的内容很有帮助。

‘贰’ linux下安装make一步步搞定linux下安装make

Linux是一种开放源的操作系统,在Linux下安装make可以让你构建项目更加方便,下面介绍如何安装make在Linux中。
第一步: 检查make是否安装
在Linux下,要检查make是否已安装,可以使用以下命令:
`which make`
如果显示有make命令,则证明make已安装。
第二步:下载make
如果make没有安装,可以根据自己Linux系统找到合适的make工具,并在终端输入以下命令下载:
`wget http://ftp.gnu.org/gnu/make/make-3.82.tar.gz`
第三步:解压make
解压下载的包:
`tar -zxvf make-3.82.tar.gz`
解压好的目录结构为‘make-3.82’,cd进入该目录。
第四步:安装make
1.编译 make
`./configure`
2.检查安装结果
`make check`
3.安装 make
`make install`
第五步:检查make安装结果
安装完成后,可以检查安装是否成功,输入以下命令:
`make –v`
如果显示出make的版本信息,则证明make安装成功。
到这里,就可以使用make进行项目构建了。安装make在Linux下十分方便,而且make也支持在Windows,Mac,Unix等各种操作系统上,它可以弥补各种平台间编译工具的不足,让软件程序更轻松,更快速的构建。

‘叁’ 透过源码领悟GCC到底在干些什么 GCC源码分析

上半年一直在做有关GCC和LD的项目,到现在还没做完。最近几天编程的那台电脑坏了,所以趁此间隙写一点相关的分析和经验之类的跟大家共享。
一、GCC的作用和运行机制
GCC是Linux下重要的编译工具,用法这里就不说了,满大街都找得到。这里我重点介绍GCC的运作机制,作为代码分析的铺垫。全篇使用C语言子部件来作分析,因为我对其他语言的编译没有研究。
根据编译原理,语言的编译分为这么几个步骤:词法分析、语法分析、语义分析、中间语言生成、优化、目标代码生成等。然而从编译器使用的角度来看,要把源代码翻译为可执行文件要经过编译和连接两步,与此对应,一塌帆个完整的编译系统一定包含编译器和连接器两大功能部件。编译器要完成编译原闷尘理中提到的那些任务;连接器要把编译器生成的代码片段拼接成一个完整的可执行程序。之所以需要连接器,是因为一般的程序都是多源文件的,而编译器一次只编译一个源文件(称之为翻译单元translation unit),因此需要连接器把所有翻译单元对应的输出合并成一个可执行文件。
如果一切顺利,可执行程序就可以正确的生成出来。但是一旦源代码存在某些问题,错误就会被报告出来。编译器报告的错误一般都是局部错误,它会指明错误在哪个文件第几行;连接器报告的错误一般都是全局错误,而且绝大多数都是多胳膊少腿的问题,比如函数重定义,无法解决的外部符号等,这些错误无法定位到某一行。
GCC就是这里的编译器。准确来说,GCC是一个编译驱动器,驱动cc1、as和ld三个部件完成编译、汇编和连接的工作。cc1将C语言源文件编译为汇编文件(.s)。而将汇编代码转换为二进制指令的工作由AS完成,生成大家都很熟悉的对象文件(.o);生成的这些对象文件再由AR程序打包成静态库(.a),或者由LD程序连接成可执行程序(elf、.so或其他格式)。而LD就是所谓的连接器。AS、AR、LD是属于另外一个叫做binutils的软件包的程序,所以要让GCC能够有效运作起来,除了在系统中安装GCC外,还要安装binutils才行。
以下是cc1、as、ld各司其责的配合完成一个编译过程。

[plain] view plain
gcc test.c -S -o test.S
as test.S -o test.o
ld test.o -o test
通常所用的“gcc -c”就相当于“gcc -S” + as,而对于编译单个源文件一步到位生成可执行“gcc test.c -o test”相当于上面三个步骤的组合,中间文件被放置在临时目录下。从这一点看来,GCC除去编译的功能外,更像是个driver,它可以驱动as和ld完成整个的编译,特别是gcc也接受对象文件(.o)和静态库(.a)作为参数用于生成可执行程序,其实背后就是调用的LD,还可以用“-Wl,”选项给LD传递自定义参数。所以在大多数软件的Makefile里,你很难找到AS和LD的字眼,gcc已经给你包办了。
GCC源代码里包含的主要就是cc1这部分(还包括一些其他的辅助工具,比如collect2等)。

二、GCC的安装
要学习和修改GCC源码,首先第一步是在自己的机器上用GCC源代码编译出一个选定版本的GCC(这里以gcc-4.5.2.tar.bz2为例,源码可以从http://gcc.gnu.org去下载)。除此之外,GCC依赖于gmp、mpfr、mpc三个库,如果你机器上没有,或者版本太团罩雹老以至于无法支持新的GCC,那么你还得去把这三个库下载下来。
一般来说,下载GCC是从GNU的FTP镜像网站去下载,gcc的代码包一般放置在/release/gcc-x.y目录下,而那三个依赖库一般放置在/infrastructure/目录下。
1、把依赖库和GCC解包

[plain] view plain
tar -vjxf gmp-4.3.2.tar.bz2 -C /usr/src/
tar -vjxf mpfr-2.4.2.tar.bz2 -C /usr/src/
tar -vxf mpc-0.8.1.tar.gz -C /usr/src/
tar -vjxf gcc-4.5.2.tar.bz2 -C /usr/src/

2、到自己的home目录下编译依赖库

[plain] view plain
cd ~
mkdir gmp-build
cd gmp-build
/usr/src/gmp-4.3.2/configure --prefix=/usr/local/gmp-4.3.2 #指定安装位置
make
make check
make install

cd ~
mkdir mpfr-build
cd mpfr-build
/usr/src/mpfr-2.4.2/configure --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2
make
make check
make install


cd ~
mkdir mpc-build
cd mpfr-build
/usr/src/mpc-0.8.1/configure --prefix=/usr/local/mpc-0.8.1 --with-mpfr=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2
make
make check
make install

3、编译GCC

[plain] view plain
cd ~
mkdir gcc-build
cd gcc-build
/usr/src/gcc-4.5.2/configure --prefix=/usr/local/gcc-4.5.2 --with-mpc=/usr/local/mpc-0.8.1 --with-mpfr=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2 --enable-languages=c,c++
make
make install

‘肆’ 怎样重新编译php

要重新编译PHP并集成libiconv函数库,首先需下载libiconv源码。

下载地址:http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz

解压下载的tar包:

tar -zxvf libiconv-1.9.2.tar.gz

接下来,安装libiconv:

配置安装目录:# configure --prefix=/usr/local/iconv

编译:# make

安装:# make install

完成libiconv的安装后,进行PHP的重新编译。在编译PHP时,需要指定--with-iconv=/usr/local/iconv参数。

对于Windows环境下的操作,如在Windows 2000下使用PHP,可以通过修改php.ini文件来启用libiconv。具体操作是去除extension=php_iconv.dll前的分号,并将原php安装文件夹下的iconv.dll复制到winnt/system32目录下。

在Linux环境下,如果使用静态安装方式,可以通过在configure命令中添加--with-iconv=/usr/local/libiconv参数来启用libiconv。使用phpinfo查看是否已启用。

下载libiconv源码:ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.8.tar.gz

解压、配置、编译、安装步骤与之前相同。

重新编译PHP后,如果在使用iconv函数时遇到bug,例如在转换字符“—”到GB2312编码时出现问题,可以通过在iconv函数的第二个参数后添加“//IGNORE”来解决。此参数表示忽略转换时的错误,避免所有该字符后面的字符串无法被保存。

在需要转换编码的场景中,可以使用iconv函数实现不同字符集间的转换。需要注意的是,iconv并非PHP的默认函数,需要单独安装。在某些环境下,如Windows 2000+php,可以通过修改php.ini文件来启用。在Linux环境下,通常使用静态安装方式即可。

PHP中另一个与iconv功能相似的函数是mbstring扩展库中的函数,用于实现字符串编码的转换。

热点内容
华为liteos编译 发布:2025-05-30 13:25:52 浏览:842
北森编程题 发布:2025-05-30 12:53:49 浏览:784
无法打开ftp 发布:2025-05-30 12:47:11 浏览:662
文件夹的资料 发布:2025-05-30 12:06:07 浏览:72
苹果手机服务器地址哪里获取 发布:2025-05-30 11:46:25 浏览:750
安卓系统开源谷歌怎么控制的 发布:2025-05-30 11:43:30 浏览:367
5m上传速度 发布:2025-05-30 11:43:25 浏览:239
c语言集合的并运算 发布:2025-05-30 11:41:11 浏览:824
云学生服务器 发布:2025-05-30 11:15:20 浏览:154
瑞恩源码 发布:2025-05-30 11:02:33 浏览:352