首页 技术 正文
技术 2022年11月18日
0 收藏 842 点赞 2,997 浏览 1361 个字

一、GCC(GNU Compiler Collection)是linux下最主要的编译工具,GCC不仅功能非常强大,结构也异常灵活。它可以通过不同的前端模块来支持各种语言,如Java、Fortran、Pascal、Modula-3和Ada

g++是GCC中的一个工具,专门来编译C++语言的。

GCC的参数有:( 也是分步实现)

-E  让GCC在预处理结束后停止编译  g++ -E hello.cpp  -o  hello.i

-c  将hello.i编译成目标代码 g++  -c  hello.i  -o  hello.o

将目标文件连接成可执行文件   g++ hell.o   -o   hello

可以一步实现   g++  hello.cpp  -o  hello

二、假如有两个以上源文件应该一下编译。

一步就实现      g++   foo1.cpp   foo2.cpp   -o   foo

也可以分步实现   g++   -c   foo1.cpp  -o   foo1.o

g++   -c    foo2.cpp  -o   foo2.o

g++   foo1.o  foo2.o    -o    foo

三、GCC一些常用选项

1、产生警告信息的选项大多数以-W开头  其中有-Wall

g++  -Wall  hello.cpp   -o   hello

2、将所有的警告当成错误的选项-Werror

g++ -Werror  hello.cpp  -o  hello

3、寻找头文件选项 -I    (linux默认路径:头文件在/usr/include/下),不在这个路径下就要用-I指定。

gcc  foo.cpp  -I/home/include   -o  foo

4、 库依赖选项     -L      (linux默认路径:库文件在/usr/lib/下),不在这个路径下就要用-L指定。

g++  foo.cpp  -L/home/lib  -lfoo  -o   foo

库就是将源文件编译之后生成的目标文件的集合。

库命名以lib开头。

库有静态库(通常以.a结尾)和动态库(通常以.so结尾)

默认情况下,g++以动态库形式连接。如果要静态库连接则要用-static指定(g++ foo.cpp  -L/home/lib  -static  -lfoo  -o  foo)

5、优化选项  -On  (n取0到3之间)

四、介绍一些GNU 二进制链工具

1、ar命令(也称为工具)   可以用来编译成静态库

ar  [-] {操作选项} {任选项} [成员名] [count] archive files….

ar r v  libtest.a  hello.o  hello1.o  生成一个库名为test,该库中存放了hello.o和hello1.o这两个模块。

操作项:d (删除)、  m(移动)、p(标准输出)、q(快速追加)、r(在库中插入模块)、t(显示库的模块清单)、x(从库中提取一个成员)。

任选项:a(成员后面添加一个新文件)、b(成员前面添加一个新文件)、c(创建一个库)、f(截短指定名字)、v(显示执行操作选项的附加信息)。

2、编译成动态库

分步完成: gcc  -fPIC  -c  func.cpp  -o  func.o

gcc -shared  -o  libfunc.so  func.o

一步就完成:gcc -fPIC  -shared -o libfunc.so  func.cpp

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,075
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,551
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,399
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,811
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,892