GCC 常用参数含义

-ansi

  关闭 gnu c 中与 ansi c 不兼容的特性 , 激活 ansi c 的专有特性 ( 包括禁止一

  些 asm inline typeof 关键字 , 以及 UNIX,vax 等预处理宏

-lxx

表示动态加载libxx.so库

-Lxx

表示增加目录xx,让编译器可以在xx下寻找库文件

-Ixx

表示增加目录xx,让编译器可以在xx下寻找头文件

优化选项

-shared

生成共享目标文件。通常用在建立共享库时

-Wall

生成所有警告信息。一下是具体的选项,可以单独使用

简单的GCC语法:

如果你只有一个文件(或者只有几个文件),那么就可以不写Makefile文件(当然有Makefile更加方便),用gcc直接编译就行了。在这里我们只介绍几个我经常用的几个参数,第一是 “-o”,它后面的参数表示要输出的目标文件,再一个是 “-c”,表示仅编译(Compile),不连接(Make),如果没有”-c”参数,那么就表示连接,如下面的几个命令:

gcc –c test.c,表示只编译test.c文件,成功时输出目标文件test.o

gcc –c test.c –o test.o ,与上一条命令完全相同

gcc –o test test.o,将test.o连接成可执行的二进制文件test

gcc –o test test.c,将test.c编译并连接成可执行的二进制文件test

gcc test.c –o test,与上一条命令相同

gcc –c test1.c,只编译test1.c,成功时输出目标文件test1.o

gcc –c test2.c,只编译test2.c,成功时输出目标文件test2.o

gcc –o test test1.o test2.o,将test1.o和test2.o连接为可执行的二进制文件test

gcc –c test test1.c test2.c,将test1.o和test2.o编译并连接为可执行的二进制文件test

注:如果你想编译cpp文件,那么请用g++,否则会有类似如下莫名其妙的错误:

cc3r3i2U.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0’......

还有一个参数是”-l”参数,与之紧紧相连的是表示连接时所要的链接库,比如多线程,如果你使用了pthread_create函数,那么你就应该在编译语句的最后加上”-lpthread”,”-l”表示连接,”pthread”表示要连接的库,注意他们在这里要连在一起写,还有比如你使用了光标库curses,那么呢就应该在后面加上”-lcurses”,比如下面的写法:

gcc –o test test1.o test2.o –lpthread –lcurses

例如: 在ubuntu 环境下编译基于course库函数的程序时,如果不带 -lncurses时,会出现

screen1.c:(.text+0x12):对‘initscr’未定义的引用
screen1.c:(.text+0x24):对‘wmove’未定义的引用
screen1.c:(.text+0x39):对‘printw’未定义的引用
screen1.c:(.text+0x4a):对‘wrefresh’未定义的引用
screen1.c:(.text+0x5f):对‘endwin’未定义的引用
需使用 gcc -o screen1 screen1.c -lncurses

时间: 2024-10-05 18:39:05

GCC 常用参数含义的相关文章

GCC常用参数

GCC--GNU C Compiler c语言编译器(远不止c语言) 介绍: 作为自由软件的旗舰项目,Richard Stallman 在十多年前刚开始写作 GCC 的时候,还只是把它当作仅仅一个C 程序语言的编译器:GCC 的意思也只是 GNU C Compiler 而已.经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言:它现在还支持 Ada 语言,C++ 语言,Java 语言,Objective C 语言,Pascal 语言,COBOL 语言,以及支持函数式编程和逻辑编程的 Merc

gcc常用参数列举

[参数详解] -c    只激活预处理,编译,和汇编,也就是他只把程序做成obj文件  例子用法:  gcc -c hello.c  他将生成.o的obj文件    -S  只激活预处理和编译,就是指把文件编译成为汇编代码.  例子用法  gcc -S hello.c  他将生成.s的汇编代码,你可以用文本编辑器察看  -E  只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里  面.  例子用法:  gcc -E hello.c > pianoapan.txt  gcc -E he

OpenSSH服务器端的配置文件各常用参数含义

/etc/ssh/sshd_config: 注:前面加#的代表默认配置 基本配置 #Port 22                     #监听的端口: ListenAddress 0.0.0.0        #监听的地址,0.0.0.0代表监听本地所有已经启用的IP: Protocol 2                   #ssh协议版本号: SyslogFacility AUTHPRIV      #日志的配置:涉及syslog,这里不讨论. LogLevel INFO       

arm-linux-gcc 常用参数讲解 gcc编译器使用方法

我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为 arm-linux-gcc.下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家. 在此之前首先介绍下编译器的工作过程,在使用GCC编译程序时,编译过程分为四个阶段: 1. 预处理(Pre-Processing) 2. 编译(Compiling) 3. 汇编(Assembling) 4. 链接(Linking) Linux程序员可以根据自己的需要让 GCC在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或

gcc/g++ 常用参数

编译的步骤 参考:gcc参数详解 gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp]. 对应的参数是 -E 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs].对应的参数是 -S 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as].对应的参数是 -c 4.连接目标代码,生成可执行程序[链接器ld].无参数. 编译步骤举例 有三个文件f1.h.f1.cc.test.c

批出里中常用参数的含义

Bat基本参数含义 每一 命令 的功能. /P 删除每一个文件之前提示确认. /f 强制删除只读文件. /S 从所有子目录删除指定文件. /q是无需确认直接删除   /q 安静模式.删除全局通配符时不要求确认. /a 根据属性选择要删除的文件. attributes R 只读文件 S 系统文件 H 隐藏文件 A 存档文件 - 前缀表明"非 /?  在命令提示符显示帮助. 备注:如果路径中带有空格字符,请将路径进行引号引用. 例1:删除文件 我要删除 D:\我的文档 和 D:\我的文档\桌面 里

嵌入式Linux GCC常用命令

本文和大家分享的主要是嵌入式Linux GCC常用命令相关内容,一起来看看吧,希望对大家学习嵌入式Linux有所帮助. 1.简介 GCC 的意思也只是 GNU C Compiler 而已.经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言:它现在还支持 Ada 语言.C++ 语言.Java 语言.Objective C 语言.Pascal 语言.COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等.而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 

grep命令常用参数及用法

1.grep介绍 grep命令是Linux系统中一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户.grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2. 2.grep常用参数 -a :将 binary 文件以 text 文件的方式搜寻数据

Ubuntu下用glade和GTK+开发C语言界面程序(二)——gcc常用命令介绍

谈到linux,没人不懂gcc,当然,学过C语言的都该知道gcc,毕竟所有的类C编译器基本都有gcc来构成. GCC的意思随着时间的发展也从最初的GNU C Compiler发展到GNU Compiler Collection,也就是GNU编译器的统称集合.GCC对与操作系统与硬件的的支持,可以说是:无处不在. 一.gcc编译过程 GCC的编译过程要分为四个阶段来进行:预处理阶段,编译阶段,汇编阶段,以及链接阶段. 1.预处理阶段(也称预编译阶段) gcc -E helloworld.c -o