您的位置:首页 > 运维架构 > Linux

Linux——C++程序编译

2016-08-31 17:36 176 查看
2016/8/31 学习caffe源代码时第一次用到了Linux下的C++程序编译,固将相关内容整理于此。

一、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之间)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux C++