当前位置:文档之家› GCC中文使用手册

GCC中文使用手册

GCC中文使用手册
GCC中文使用手册

gcc编译器使用简明指南

gcc编译器使用简明指南 gcc对文件的处理需要经过预处理->编译->汇编->链接的步骤,从而产生一个可执行文件,各部分对应不同的文件类型,具体如下: file.c c程序源文件 file.i c程序预处理后文件 file.cxx c++程序源文件,也可以是https://www.doczj.com/doc/9c4238292.html, / file.cpp / file.c++ file.ii c++程序预处理后文件 file.h c/c++头文件 file.s 汇编程序文件 file.o 目标代码文件 gcc [选项]文件列表 -ansi 强制完全ANSI一致 -c 仅编译或汇编,生成目标代码文件,将.c、.i、.s等文件生成.o文件,其余文件被忽略 -S 仅编译,不进行汇编和链接,将.c、.i等文件生成.s文件,其余文件被忽略 -E 仅预处理,并发送预处理后的.i文件到标准输出,其余文件被忽略 -o file 创建可执行文件并保存在file中,而不是默认文件a.out -g 产生用于调试和排错的扩展符号表,用于GDB调试,切记-g和-O通常不能一起使用 -w 取消所有警告 -W 给出更详细的警告 -O [num]优化,可以指定0-3作为优化级别,级别0表示没有优化 -x language 默认为-x none,即依靠后缀名确定文件类型,加上-x lan确定后面所有文件类型,直到下一个-x出现为止 -D macro[=]类似于源程序里的#define,在-D macro中的macro可被源程序识别,例如gcc -D NUM -D FILE=\"bbs.txt\" hello.c -o hello,第一个-D选项定义宏NUM,在程序中可以使用#ifdef来检查是否被设置,第二个-D定义宏FILE,在源程序中可用 -U macro 类似于源程序开头定义#undef macro,也就是取消源程序中的某个宏定义

比特币0.9.2版编译中文手册

比特币0.9.2中文版编译手册 日期:2014-07-01 构建比特币源码,是一件十分费时费力的工作,尤其在windows系统中编译比特币源码更加的麻烦,经过一两天努力,终于在windows7 64位系统中成功编译出了比特币源文件。现在总结如下,首先准备一套干净的windows7 64位操作系统,最好是使用vbox或者vmware 虚拟机建立一个专用系统,这样的可以防止其它干扰导至编译失败,接下来说说,我的编译过程: 1.安装msys系统 msys作用是在windows系统中重建linux系统编译环境,在msys系统下操作,就像linux 中的操作一样,具有相同的语法命令。从下面的网址中下载msys最新版: https://www.doczj.com/doc/9c4238292.html,/projects/mingw/files/Installer/mingw-get-setup.exe/download 然后运行mingw-get-setup.exe文件后,选择安装目录为H:\MinGW,之后软件会首先更新下载库,更新成功会弹出一个窗口MinGW installation manager,在这个窗口中,只下载msys相关的包文件,不要下载mingw相关文件,因为不使用它带的这个mingw。 主要如下面所示: msys-base-bin msys-autoconf-bin msys-automake-bin msys-libtool-bin 选择好之后,点击Installation->Apply changes即可。一定要确保mingw包没有被下载,这里我们只需要msys相关系统,也要确保msys-gcc和msys-w32api等包没有被下载,否则当我们执行编译时,可能会调用这些不该出现的包文件,而导至编译失败。 2.安装perl系统 由于在编译比特币时,需要调用一些perl脚本,所以从下面的网址中下载一个perl安装程序,然后安装即可。 https://www.doczj.com/doc/9c4238292.html,/ActivePerl/releases/5.18.1.1800/ActivePerl-5.18.1.1800-M SWin32-x64-297570.msi

GLD中文手册

标题: GLD中文手册--前言 前段时间从每天十多个小时的工作时间中挤出那么点时间完成了NASM手册的翻译,之后得到了汇编版很多朋友的支持与关心,心中非常感激。 但是我们知道,NASM只是一个汇编器,只有它我们还无法完成我们的工作,NASM 功能很强大,能生成很多目标格式的文件,但是得不到我们最终想要的可执行文件。对,我们还需要一个连接器。 可供选择的连接器有很多,它们当中也有很多是免费的,这在NASM的手册中也有介绍,这里我选择的是GNU的连接器ld,为了能更好地使用这个工具,就有了这篇翻译文档。 请不要误会,gld并不只能运行在unix/linux系统下面。GCC的windows版本djgpp带有ld的windows版本,可以通过互联网免费下载。 希望这篇文档能对大家有所帮助,谢谢。 标题: GLD中文手册--(一) 使用ld ******** 本文档介绍GNU连接器ld的2.14版本. 本文档在GNU自由文档许可证下发行.在"GNU自由文档许可证"一章中有关于本 许可证的一份拷贝. 概述 ******** 'ld'把一定量的目标文件跟档案文件连接起来,并重定位它们的数据,连接符号 引用.一般,在编译一个程序时,最后一步就是运行'ld'. 'ld'能接受连接命令语言文件,这是一种用AT&T的连接编辑命令语言的超集写 成的文件,用来在连接的整个过程中提供显式的,全局的控制. 本版本的'ld'使用通用BFD库来操作目标文件.这就允许'ld'读取,合并,写入目标文件时,可以使用各种不同的格式,比如,COFF或'a.out'. 不同的格式可以被 连接到一起产生一个有效的目标文件. 除了它的灵活性,GNU连接器比其它连接器更有用的地方在于它提供了诊断信息. 许多连接器在碰到一个错误的时候立即放弃执行;但'ld'却能够继续执行,以让 你发现其他的错误(或者,在某些情况下,得到一个带有错误的输出文件) 引用 ********** GNU连接器'ld'能够处理大量的不同情况,并且跟其他的连接器保持尽可能的兼容.这样,你就拥有更多的选择来控制它的行为. 命令行选项 ==================== 连接器提供大量的命令行选项,但是,在实际使用中,只有少数被经常使用.比 如,'ld'的一个经常的使用场合是在一个标准的Unix系统上连接标准的Unix目标文件.在这样的一个系统上,连接文件'hello.o'如下: ld -o OUTPUT /lib/crt0.o hello.o -lc

Object-C 经典入门教程

Object-C 入门教程 分类:Sip&asterisk2009-05-04 16:34 16409人阅读评论(2) 收藏举报大纲 o开始吧下载这篇教学 o设定环境 o前言 o编译 hello world o创建 Classes@interface o@implementation o把它们凑在一起 o详细说明...多重参数 o建构子(Constructors) o访问权限 o Class level access o异常情况(Exceptions)处理 o继承、多型(Inheritance, Polymorphism)以及其他面向对象功 能id 型别 o继承(Inheritance) o动态识别(Dynamic types) o Categories o Posing o Protocols o内存管理Retain and Release(保留与释放) o Dealloc o Autorelease Pool o Foundation Framework ClassesNSArray o NSDictionary ?优点与缺点 ?更多信息 开始吧 下载这篇教学 ?所有这篇初学者指南的原始码都可以由objc.tar.gz下 载。这篇教学中的许多范例都是由 Steve Kochan 在 Programming in Objective-C. 一书中撰写。如果你想得到更 多详细信息及范例,请直接参考该书。这个网站上登载的所有 范例皆经过他的允许,所以请勿复制转载。 设定环境 ?Linux/FreeBSD: 安装GNUStep为了编译 GNUstep

应用程序,必须先执行位于 /usr/GNUstep/System/Makefiles/GNUstep.sh 的 GNUstep.sh 这个档案。这个路径取决于你的系统环境, 有些是在 /usr, some /usr/lib,有些是/usr/local。 如果你的 shell 是以 csh/tcsh 为基础的 shell,则应 该改用 GNUStep.csh。建议把这个指令放在 .bashrc 或 .cshrc 中。 ?Mac OS X: 安装XCode ?Windows NT 5.X: 安装cygwin或mingw,然后安装 GNUStep 前言 ?这篇教学假设你已经有一些基本的 C 语言知识,包括 C 数 据型别、什么是函式、什么是回传值、关于指针的知识以及基 本的 C 语言内存管理。如果您没有这些背景知识,我非常建议 你读一读 K&R 的书:The C Programming Language(译注:台 湾出版书名为 C 程序语言第二版)这是 C 语言的设计者所写 的书。 ?Objective-C,是 C 的衍生语言,继承了所有 C 语言的特 性。是有一些例外,但是它们不是继承于 C 的语言特性本身。 ?nil:在 C/C++ 你或许曾使用过 NULL,而在 Objective-C 中则是 nil。不同之处是你可以传递讯息给 nil(例如 [nil message];),这是完全合法的,然而你却不能对 NULL 如法炮 制。 ?BOOL:C 没有正式的布尔型别,而在 Objective-C 中也不 是「真的」有。它是包含在 Foundation classes(基本类别库) 中(即 import NSObject.h;nil 也是包括在这个头文件内)。 BOOL 在 Objective-C 中有两种型态:YES 或 NO,而不是 TRUE 或 FALSE。 ?#import vs #include:就如同你在 hello world 范例中看 到的,我们使用了#import。#import 由 gcc 编译程序支援。 我并不建议使用 #include,#import基本上跟 .h 档头尾的 #ifndef #define #endif 相同。许多程序员们都同意,使用这 些东西这是十分愚蠢的。无论如何,使用 #import 就对了。这 样不但可以避免麻烦,而且万一有一天 gcc 把它拿掉了,将会 有足够的 Objective-C 程序员可以坚持保留它或是将它放回 来。偷偷告诉你,Apple 在它们官方的程序代码中也使用了 #import。所以万一有一天这种事真的发生,不难预料 Apple 将 会提供一个支持 #import 的 gcc 分支版本。 ?在 Objective-C 中, method 及 message 这两个字是可以 互换的。不过messages 拥有特别的特性,一个 message 可以 动态的转送给另一个对象。在Objective-C 中,呼叫对象上的 一个讯息并不一定表示对象真的会实作这个讯息,而是对象知 道如何以某种方式去实作它,或是转送给知道如何实作的对象。

valgrind中文手册

/* valgrind-3.5.0 编译和安装技巧 * author: lblong * date : 20100530 * */ 安装步骤: 1、从valgrind官网上获得代码(也可以通过下载tar包获得源代码,可以点击这里下载) https://www.doczj.com/doc/9c4238292.html,/downloads/current.html#current 2、进入源代码目录 3、运行./autogen.sh设置环境(需要标准的autoconf工具) 4、运行./configure配置V algrind,具体参数信息详见INSTALL文件。一般只需要设置--prefix=/where/you/want/it/installed 5、make,编译V algrind 6、make install,安装V algrind 详细: 1. linux 环境下执行./configure telstar:/sybase/telstar/user/lblong/memory/valgrind-3.5.0 > ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking whether ln -s works... yes checking for gcc... cc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether cc accepts -g... yes checking for cc option to accept ANSI C... none needed checking for style of include used by make... GNU checking dependency style of cc... gcc3 checking whether cc understands -c and -o together... yes checking how to run the C preprocessor... cc -E

GCC中文手册

GCC中文手册 GCC Section: GNU Tools (1) Updated: 2003/12/05 Index Return to Main Contents NAME gcc,g++-GNU工程的C和C++编译器(egcs-1.1.2) 总览(SYNOPSIS) gcc[option|filename]... g++[option|filename]... 警告(WARNING) 本手册页内容摘自GNU C编译器的完整文档,仅限于解释选项的含义. 除非有人自愿维护,否则本手册页不再更新.如果发现手册页和软件之间有所矛盾,请查对Info文件, Info 文件是权威文档. 如果我们发觉本手册页的内容由于过时而导致明显的混乱和抱怨时,我们就停止发布它.不可能有其他选择,象更新Info文件同时更新man手册,因为其他维护GNU CC的工作没有留给我们时间做这个. GNU工程认为man手册是过时产物,应该把时间用到别的地方. 如果需要完整和最新的文档,请查阅Info文件`gcc'或Using and Porting GNU CC (for version 2. 0) (使用和移植GNU CC 2.0) 手册.二者均来自Texinfo原文件gcc.texinfo. 描述(DESCRIPTION)

C和C++编译器是集成的.他们都要用四个步骤中的一个或多个处理输入文件: 预处理(preprocessing),编译(compilation),汇编(assembly)和连接(linking).源文件后缀名标识源文件的语言,但是对编译器来说,后缀名控制着缺省设定: gcc 认为预处理后的文件(.i)是C文件,并且设定C形式的连接. g++ 认为预处理后的文件(.i)是C++文件,并且设定C++形式的连接. 源文件后缀名指出语言种类以及后期的操作: .c C源程序;预处理,编译,汇编 .C C++源程序;预处理,编译,汇编 .cc C++源程序;预处理,编译,汇编 .cxx C++源程序;预处理,编译,汇编 .m Objective-C源程序;预处理,编译,汇编 .i预处理后的C文件;编译,汇编 .ii预处理后的C++文件;编译,汇编 .s汇编语言源程序;汇编 .S汇编语言源程序;预处理,汇编 .h预处理器文件;通常不出现在命令行上 其他后缀名的文件被传递给连接器(linker).通常包括: .o目标文件(Object file) .a归档库文件(Archive file) 除非使用了-c, -S,或-E选项(或者编译错误阻止了完整的过程),否则连接总是最后的步骤.在连接阶段中,所有对应于源程序的.o文件, -l库文件,无法识别的文件名(包括指定的.o目标文件和.a库文件)按命令行中的顺序传递给连接器.

GCC内联汇编入门

GCC内联汇编入门 分类:linux编程2008-12-21 15:48 507人阅读评论(0) 收藏举报 目录(?)[-] 1. 前言 1. 版权与许可证 2. 回馈与更正 3. 感谢 2. 简介 3. GCC汇编语法 4. 基本内联汇编 5. 扩展内联汇编 1. 汇编程序模板 2. 操作数 3. Clobber列表 4. Volatile 6. 更多关于约束条件 1. 常用的约束 2. 约束修饰符 7. 一些有用的诀窍 8. 结束语 9. 参考 原文为GCC-Inline-Assembly-HOWTO,在google上可以找到原文,欢迎指出翻译错误。 中文版说明 由于译者水平有限,故译文出错之处,还请见谅。C语言的关键字不译,一些单词或词组(如colbber等)由于恐怕译后词不达意,故并不翻译,由下面的单词表代为解释,敬请见谅。 英文原文中的单词和词组: operand:操作数,可以是寄存器,内存,立即数。 volatile:易挥发的,是C语言的关键字。 constraint:约束。 register:本文指CPU寄存器。 asm:“asm”和“__asm__”在C语言中是关键字。原文中经常出现这个单词,是指嵌入到C语言(或者其它语言)的汇编程序片断。 basic inline assembly:指C语言中内联汇编程序的一种形式,和extended asm对 应。基本格式如下:

asm("assembly code"); extended assembly:和basic inline assembly对应,比它多了一些特性,如可以指明输入,输出等。基本格式如下: asm ( assembler template : output operands : input operands : list of clobbered registers ); clobber list:实际上就是被使用的寄存器的列表,用来告诉GCC它们已经被asm 使用了,不要在asm程序外使用它们。不然可能带来不可预见的后 果。 clobbered registers:它和clobber list对应。 assembler template:就是汇编模板,所有内联汇编代码都有按一定的格式。 见extended assembly的说明 作者:Sandeep.S 译者:吴遥 版本号 v0.1 2003年3月01日 翻译版更新日期 2008/06/11 这篇HOWTO解释GCC提供的内联汇编特性的用途和用法。学习这篇文章只须具备两个前提条件,显然那就是对x86汇编语言和C语言有基本的了解。 目录 1.前言 1.1版权与许可证 1.2回馈与更正 1.3感谢 2.简介 3.GCC汇编语法 4.基本内联汇编 5.扩展内联汇编 5.1汇编程序模板 5.2操作数 5.3 Clobber列表 5.4 Volatile … ? 6.更多关于约束条件

gcc命令行详解

gcc命令行详解 1、gcc包含的c/c++编译器 gcc、cc、c++、g++ gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译 2、gcc的基本用法 gcc test.c这样将编译出一个名为a.out的程序 gcc test.c -o test这样将编译出一个名为test的程序 -o参数用来指定生成程序的名字 3、为什么会出现undefined reference to 'xxxxx'错误? 首先这是链接错误,不是编译错误,也就是说如果只有这个错误,说明你的程序源码本身没有问题,是你用编译器编译时参数用得不对,你没有指定链接程序要用到得库,比如你的程序里用到了一些数学函数,那么你就要在编译参数里指定程序要链接数学库,方法是在编译命令行里加入-lm 4、-l参数和-L参数 -l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?-lname,在连接时,装载名字为“libname.a”的函数库:-lm表示连接名为“libm.a”的数学函数库。就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了 好了现在我们知道怎么得到库名,当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest.so拷贝到/usr/lib里,编译时加上-ltest参数,我们就能用上libtest.so库了(当然要用libtest.so库里的函数,我们还需要与libtest.so配套的头文件) 放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了,但如果库文件没放在这三个目录里,而是放在其他目录里,这时我们只用-l参数的话,链接还是会出错,出错信息大概是:“/usr/bin/ld: cannot find -lxxx”,也就是链接程序ld在那3个目录里找不到libxxx.so,这时另外一个参数-L就派上用场了,比如常用的X11的库,它在/usr/X11R6/lib目录下,我们编译时就要用-L/usr/X11R6/lib -lX11参数,-L参数跟着的是库文件所在的目录名。再比如我们把libtest.so放在/aaa/bbb/ccc目录下,那链接参数就是 -L/aaa/bbb/ccc -ltest 另外,大部分libxxxx.so只是一个链接,以RH9为例,比如libm.so它链接到/lib/libm.s o.x,/lib/libm.so.6又链接到/lib/libm-2.3.2.so, 如果没有这样的链接,还是会出错,因为ld只会找libxxxx.so,所以如果你要用到xxxx 库,而只有libxxxx.so.x或者libxxxx-x.x.x.so,做一个链接就可以了 ln -s libxxxx-x.x.x.so libxxxx.so 手工来写链接参数总是很麻烦的,还好很多库开发包提供了生成链接参数的程序,名字一般叫xxxx-config,一般放在/usr/bin目录下,比如 gtk1.2的链接参数生成程序是gtk-config,执行gtk-config --libs就能得到以下输出"- L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic

linux系统下C编译器GCC入门

linux系统下C编译器— gcc 入门 <一>gcc简介 Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为 a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。而gcc则通过后缀来区别输入文件的类别,下面我们来介绍gcc所遵循的部分约定规则。 .c为后缀的文件,C语言源代码文件; .a为后缀的文件,是由目标文件构成的档案库文件; .C,.cc或.cxx 为后缀的文件,是C++源代码文件; .h为后缀的文件,是程序所包含的头文件; .i 为后缀的文件,是已经预处理过的C源代码文件; .ii为后缀的文件,是已经预处理过的C++源代码文件; .m为后缀的文件,是Objective-C源代码文件; .o为后缀的文件,是编译后的目标文件; .s为后缀的文件,是汇编语言源代码文件; .S为后缀的文件,是经过预编译的汇编语言源代码文件。 <二>gcc的执行过程 虽然我们称gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,. S为后缀的汇编语言源代码文件和汇编,.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。 <三>gcc的基本用法和选项 在使用gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。g cc编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。

gcc中文手册

GCC 中文手册GCC Section: GNU Tools (1) Updated: 2003/12/05 NAME gcc,g++-GNU工程的C和C++编译器(egcs-1.1.2)

总览(SYNOPSIS) gcc[option|filename ]... g++[option|filename ]... 警告(WARNING) 本手册页内容摘自GNU C编译器的完整文档,仅限于解释选项的含义. 除非有人自愿维护,否则本手册页不再更新.如果发现手册页和软件之间有所矛盾,请查对Info文件, Info文件是权威文档. 如果我们发觉本手册页的内容由于过时而导致明显的混乱和抱怨时,我们就停止发布它.不可能有其他 选择,象更新Info文件同时更新man手册,因为其他维护GNU CC的工作没有留给我们时间做这个. GNU 工程认为man手册是过时产物,应该把时间用到别的地方. 如果需要完整和最新的文档,请查阅Info文件`gcc'或Using and Porting GNU CC (for version 2.0) (使用和移植GNU CC 2.0) 手册.二者均来自Texinfo原文件gcc.texinfo. 描述(DESCRIPTION) C和C++编译器是集成的.他们都要用四个步骤中的一个或多个处理输入文件: 预处理(preprocessing),编译(compilation),汇编(assembly)和连接(linking).源文件后缀名标识源文件的语言,但是对编译器来说,后缀名控制着缺省设定: gcc 认为预处理后的文件(.i)是C文件,并且设定C形式的连接. g++ 认为预处理后的文件(.i)是C++文件,并且设定C++形式的连接. 源文件后缀名指出语言种类以及后期的操作: .c C源程序;预处理,编译,汇编 .C C++源程序;预处理,编译,汇编 .cc C++源程序;预处理,编译,汇编 .cxx C++源程序;预处理,编译,汇编 .m Objective-C源程序;预处理,编译,汇编 .i预处理后的C文件;编译,汇编 .ii预处理后的C++文件;编译,汇编 .s汇编语言源程序;汇编 .S汇编语言源程序;预处理,汇编 .h预处理器文件;通常不出现在命令行上

gcc编译器使用说明

要想读懂本文,你需要对C语言有基本的了解,本文将介绍如何使用gcc编译器。首先,我们介绍如何在命令行方式下使用编译器编译简单的C源代码。然后,我们简要介绍一下编译器究竟作了那些工作,以及如何控制编译过程。我们也简要介绍了调试器的使用方法。 GCC rules 你能想象使用封闭源代码的私有编译器编译自由软件吗?你怎么知道编译器在你的可执行文件中加入了什么?可能会加入各种后门和木马。Ken Thompson是一个著名的黑客,他编写了一个编译器,当编译器编译自己时,就在'login'程序中留下后门和永久的木马。请到这里阅读他对这个杰作的描述。幸运的是,我们有了gcc。当你进行 configure; make; make install 时, gcc在幕后做了很多繁重的工作。如何才能让gcc为我们工作呢?我们将开始编写一个纸牌游戏,不过我们只是为了演示编译器的功能,所以尽可能地精简了代码。我们将从头开始一步一步地做,以便理解编译过程,了解为了制作可执行文件需要做些什么,按什么顺序做。我们将看看如何编译C程序,以及如何使用编译选项让gcc按照我们的要求工作。步骤(以及所用工具)如下:预编译 (gcc -E),编译 (gcc),汇编 (as),和连接 (ld)。 开始... 首先,我们应该知道如何调用编译器。实际上,这很简单。我们将从那个著名的第一个C程序开始。(各位老前辈,请原谅我)。 #include int main() { printf("Hello World!\n"); } 把这个文件保存为 game.c。你可以在命令行下编译它: gcc game.c 在默认情况下,C编译器将生成一个名为 a.out 的可执行文件。你可以键入如下命令运行它:a.out Hello World 每一次编译程序时,新的 a.out 将覆盖原来的程序。你无法知道是哪个程序创建了 a.out。

Proteus入门教程完整版

Proteus 入门教程 本文将简单介绍一下Proteus 的使用。在这里,我用的Proteus 版本是Proteus 6.7 sp3 Professional。 一、Proteus 6 Professional 界面简介 安装完Proteus 后,运行ISIS 6 Professional,会出现以下窗口界面: 为了方便介绍,我分别对窗口内各部分进行中文说明(见上图)。下面简单 介绍各部分的功能: 1.原理图编辑窗口(The Editing Window):顾名思义,它是用来绘制原理 图的。蓝色方框内为可编辑区,元件要放到它里面。注意,这个窗口是 没有滚动条的,你可用预览窗口来改变原理图的可视范围。 2.预览窗口(The Overview Window):它可显示两个内容,一个是:当你 在元件列表中选择一个元件时,它会显示该元件的预览图;另一个是, 当你的鼠标焦点落在原理图编辑窗口时(即放置元件到原理图编辑窗口 后或在原理图编辑窗口中点击鼠标后),它会显示整张原理图的缩略图, 并会显示一个绿色的方框,绿色的方框里面的内容就是当前原理图窗口 中显示的内容,因此,你可用鼠标在它上面点击来改变绿色的方框的位 置,从而改变原理图的可视范围。 3.模型选择工具栏(Mode Selector Toolbar): 主要模型(Main Modes): 1* 选择元件(components)(默认选择的) 2* 放置连接点 3* 放置标签(用总线时会用到) 4* 放置文本 5* 用于绘制总线 6* 用于放置子电路 7* 用于即时编辑元件参数(先单击该图标再单击要修改的元件) 配件(Gadgets): 1* 终端接口(terminals):有VCC、地、输出、输入等接口 2* 器件引脚:用于绘制各种引脚 3* 仿真图表(graph):用于各种分析,如Noise Analysis 4* 录音机 5* 信号发生器(generators) 6* 电压探针:使用仿真图表时要用到 7* 电流探针:使用仿真图表时要用到 8* 虚拟仪表:有示波器等 2D 图形(2D Graphics): 1* 画各种直线 2* 画各种方框 3* 画各种圆 4* 画各种圆弧

gcc入门教程

不经意间,GCC已发展到了4.3的版本,尽管在软件开发社区之外乏人闻问,但因为GCC 在几乎所有开源软件和自由软件中都会用到,因此它的编译性能的涨落会直接影响到Linux 、Firefox 乃至于https://www.doczj.com/doc/9c4238292.html,和Apache等几千个项目的开发。因此,把GCC摆在开源软件的核心地位是一点也不为过。另一方面,GCC4.3的出现,正在牵引着广大程序员们的心。如果我们非要用一个词来说明GCC与程序员之间的关系,那无疑是"心随心动"。 历史篇 作为自由软件的旗舰项目,Richard Stallman 在十多年前刚开始写作GCC 的时候,还只是把它当作仅仅一个 C 程序语言的编译器;GCC 的意思也只是GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持C 语言;它现在还支持Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的Mercury 语言,等等。而GCC 也不再单只是GNU C 语言编译器的意思了,而是变成了GNU Compiler Collection 也即是GNU 编译器家族的意思了。另一方面,说到GCC 对于各种硬件平台的支持,概括起来就是一句话:无所不在。几乎所有有点实际用途的硬件平台,甚至包括有些不那么有实际用途的硬件平台。 Gcc 简介 Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。Gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。 官方网站:https://www.doczj.com/doc/9c4238292.html,/ gcc是linux的唯一编译器,没有gcc就没有linux,gcc的重要性就不可言喻啦。居然这么重要,那就很值得我们来好好研究下啦。好啦,开始我们的gcc之旅吧! 首先消除gcc和g++误区吧。 gcc和g++都是GNU(组织)的一个编译器。 误区一:gcc只能编译c代码,g++只能编译c++代码 两者都可以,但是请注意: 1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的,例如:#include int main(int argc, char* argv[]) { if(argv == 0) return; printString(argv); return; } int printString(char* string) { sprintf(string, "This is a test.\n"); } 如果按照C的语法规则,OK,没问题,但是,一旦把后缀改为cpp,立刻报三个错:“printString 未定义”; “cannot convert `char**' to `char*”;

GCC 中文手册

GCC中文手册 NAME gcc,g++-GNU工程的C和C++编译器(egcs-1.1.2) 总览(SYNOPSIS) gcc[option|filename ]... g++[option|filename ]... 警告(WARNING) 本手册页内容摘自GNU C编译器的完整文档,仅限于解释选项的含义. 除非有人自愿维护,否则本手册页不再更新.如果发现手册页和软件之间有所矛盾,请查对Info文件, Info 文件是权威文档. 如果我们发觉本手册页的内容由于过时而导致明显的混乱和抱怨时,我们就停止发布它.不可能有其他选择,象更新Info文件同时更新man手册,因为其他维护GNU CC的工作没有留给我们时间做这个. GNU工程认为man手册是过时产物,应该把时间用到别的地方. 如果需要完整和最新的文档,请查阅Info文件`gcc'或Using and Porting GNU CC (for version 2.0) (使用和移植GNU CC 2.0) 手册.二者均来自Texinfo原文件 gcc.texinfo. 描述(DESCRIPTION) C和C++编译器是集成的.他们都要用四个步骤中的一个或多个处理输入文件: 预处理(preprocessing),编译(compilation),汇编(assembly)和连接(linking).源文件后缀名标识源文件的语言,但是对编译器来说,后缀名控制着缺省设定: gcc 认为预处理后的文件(.i)是C文件,并且设定C形式的连接. g++ 认为预处理后的文件(.i)是C++文件,并且设定C++形式的连接.

源文件后缀名指出语言种类以及后期的操作: .c C源程序;预处理,编译,汇编 .C C++源程序;预处理,编译,汇编 .cc C++源程序;预处理,编译,汇编 .cxx C++源程序;预处理,编译,汇编 .m Objective-C源程序;预处理,编译,汇编 .i预处理后的C文件;编译,汇编 .ii预处理后的C++文件;编译,汇编 .s汇编语言源程序;汇编 .S汇编语言源程序;预处理,汇编 .h预处理器文件;通常不出现在命令行上 其他后缀名的文件被传递给连接器(linker).通常包括: .o目标文件(Object file) .a归档库文件(Archive file) 除非使用了-c, -S,或-E选项(或者编译错误阻止了完整的过程),否则连接总是 最后的步骤.在连接阶段中,所有对应于源程序的.o文件, -l库文件,无法识别的文件名(包括指定的 .o目标文件和.a库文件)按命令行中的顺序传递给连接器. 选项(OPTIONS) 选项必须分立给出: `-dr'完全不同于`-d -r '. 大多数`-f'和`-W'选项有两个相反的格式: -f name和 -fno-name (或-W name和-Wno-name).这里 只列举不是默认选项的格式. 下面是所有选项的摘要,按类型分组,解释放在后面的章节中. 总体选项(Overall Option) -c -S -E -o file -pipe -v -x language 语言选项(Language Option) -ansi -fall-virtual -fcond-mismatch -fdollars-in-identifiers -fenum-int-equiv -fexternal-templates -fno-asm -fno-builtin -fhosted -fno-hosted -

目前最全的GCC+中文手册

GCC 中文手册 作者:徐明 -msvr4 -msvr3 打开(`-msvr4')或关闭(`-msvr3')和System V第四版(SVr4)相关的编译器扩展.效果如下: * 输出哪种汇编语法(你可以使用`-mversion-03.00'选项单独选择). * `-msvr4'使C预处理器识别`#pragma weak'指令 * `-msvr4'使GCC输出额外的声明指令(declaration directive),用于SVr4. 除了SVr4配置, `-msvr3'是所有m88K配置的默认选项. -mtrap-large-shift -mhandle-large-shift 包含一些指令,用于检测大于31位的位移(bit-shift);根据相应的选项,对这样的位移发出自陷 (trap)或执行适当的处理代码.默认情况下, GCC对大位移不做特别处理. -muse-div-instruction 很早以前的88K型号没有(div)除法指令,因此默认情况下GCC避免产生这条指令.而这个选项告诉GCC该指令是安全的. -mversion-03.00 在DG/UX配置中存在两种风格的SVr4.这个选项修改-msvr4 ,选择hybrid-COFF或 real-ELF风格.其他配置均忽略该选项. -mwarn-passed-structs 如果某个函数把结构当做参数或结果传递, GCC发出警告.随着C语言的发展,人们已经改变了传递结构的约定, 它往往导致移植问题.默认情况下, GCC不会发出警告. 下面的选项用于IBM RS6000: -mfp-in-toc -mno-fp-in-toc 控制是否把浮点常量放到内容表(TOC)中,内容表存放所有的全局变量和函数地址.默认情况下, GCC把浮点常量放到这里;如果TOC溢出, `-mno-fp-in-toc'选项能够减少TOC的大小,这样就可以避免溢出. 下面的`-m'选项用于IBM RT PC: -min-line-mul 对于整数乘法使用嵌入代码.这是默认选项. -mcall-lib-mul 对于整数乘法使用lmul$$ . -mfull-fp-blocks

OpenCV入门教程

OpenCV 入门教程 作者:于仕琪 shiqi.yu@https://www.doczj.com/doc/9c4238292.html, https://www.doczj.com/doc/9c4238292.html, 2012 年 8 月 版权所有?于仕琪 本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

前言 OpenCV 是一个广受欢迎的开源计算机视觉库,它提供了很多函数,实现了很多计算机视觉算法,算法从最基本的滤波到高级的物体检测皆有涵盖。很多初学者希望快速掌握OpenCV 的使用方法,但往往会遇到各种各样的困难。其实仔细分析,造成这些困难的原因有两类:第一类是C/C++编程基础不过关;第二类是不了解算法原理。解决这些困难无非提升编程能力,以及提升理论基础知识。提升编程能力需要多练习编程,提升理论知识需要系统学习《数字图像处理》、《计算机视觉》和《模式识别》等课程,所有这些都不能一蹴而就,需要耐下心来认真修炼。 同时我们也需要认识到 OpenCV 只是一个算法库,能为我们搭建计算机视觉应用提供“砖头”。我们并不需要完全精通了算法原理之后才去使用 OpenCV,只要了解了“砖头”的功能,就可以动手了。在实践中学习才是最高效的学习方式。本小册子希望为初学者提供引导,使初学者快速了解 OpenCV 的基本数 据结构以及用法。 此外,如您发现有错误之处,欢迎来信指正。 于仕琪 深圳大学 插播广告:欢迎有能力、有激情以及对计算机视觉有兴趣的同学报考我的 研究生。欲了解详情可以访问深圳大学招生网https://www.doczj.com/doc/9c4238292.html,/或者给我发 email。

目录 第 1 章预备知识 (5) 1.1 编程的流程 (5) 1.2 什么叫编辑 (6) 1.3 什么叫编译 (6) 1.4 什么叫连接 (7) 1.5 什么叫运行 (7) 1.6 Visual C++是什么 (8) 1.7 头文件 (9) 1.8 库文件 (10) 1.9 OpenCV 是什么 (11) 1.10 什么是命令行参数 (12) 1.11 常见编译错误 (13) 1.11.1 找不到头文件 (13) 1.11.2 拼写错误 (14) 1.12 常见链接错误 (15) 1.13 运行时错误 (17) 第 2 章OpenCV 介绍 (19) 2.1 OpenCV 的来源 (19) 2.2 OpenCV 的协议 (19) 第 3 章图像的基本操作 (21) 3.1 图像的表示 (21) 3.2 Mat 类 (23) 3.3 创建 Mat 对象 (24) 3.3.1 构造函数方法 (24) 3.3.2 create()函数创建对象 (25) 3.3.3 Matlab 风格的创建对象方法 (26)

相关主题
文本预览
相关文档 最新文档