Linux下g++基本的编译
来源:互联网 发布:unity3d安装步骤 编辑:程序博客网 时间:2024/06/15 14:19
gcc简介(对C/C++编译的控制):
-预处理(Preprocessing),-编译(Compilation), -汇编(Assembly), -链接(Linking)
1、基本的cpp文件编译及链接指令
// main.cpp#include <iostream>using namespace std;int main(int argc, char *argv[]){ cout<<"this is a g++ test"<<endl; return 0;}
g++ main.cpp
生成的文件为以默认名字生成的输出文件a.out, ./a.out 执行,可打印出:this is a g++ test
指定生成的文件名称: -o file(将文件编译为file,file可以是预处理文件/汇编文件/目标文件或者最终的可执行文件)
g++ main.cpp -o main
生成main,./main 执行,结果与上述一样
只编译不链接:-c (生成.o的二进制文件)
rm main
g++ -c main.cpp
生成main.o文件,
再执行g++ main -o main
生成main可执行文件,./main, 执行结果相同
预编译:-E (把所有的关文件,宏等拼接至一个文件内)
rm main main.o
g++ -E main.cpp > main.e
main.e文件内即可预编译的文件
只编译不汇编:-S
rm main.e
g++ -S main.cpp
main.s文件内即可编译后的汇编代码
带调试的可执行文件:-g
rm main.s
g++ -g main.cpp -o main_d
2、多文件编译
目录结构
src/
person/ Person.h, person/Person.cpp
test/ main.cpp
文件内容如下// main.cpp#include "Person.h"#include <iostream>using namespace std;int main(int argc, char *argv[]){ Person person; cout<<"test main"<<endl; return 0;}
// Person.hclass Person{public: Person();};
// Person.cpp#include "Person.h"#include <iostream>Person::Person(){ std::cout<<"MultiFile compilation"<<std::endl;}
test目录下编译
g++ main.cpp ./person/Person.cpp -I../person -o main
执行:
./main
3、动态链接库
指令 :g++ cppfiles -fpic -shared -o libname.so
上面的命令行中-shared表明产生共享库,而-fPIC则表明使用地址无关代码。PIC:Position Independent Code.
person目录下编译
g++ Person.cpp -fpic -shared -o libPerson.so
test目录下编译
g++ main.cpp -o main -I../person -L../person -lPerson
-L表示链接目标的文件路径,-lPerson为链接库的名称
执行
首先设置环境
export LD_LIBRARY_PATH=../person
./main
输出内容:
MultiFile compilation
test main
- Linux下g++基本的编译
- Linux下编译的一些基本命令
- linux下c++的编译器g++的基本使用
- linux下c++的编译器g++的基本使用
- linux下c++的编译器g++的基本使用 .
- linux下c++的编译器g++的基本使用
- linux下c++的编译器g++的基本使用
- linux下c++的编译器g++的基本使用
- linux下c++的编译器g++的基本使用
- linux下c++的编译器g++的基本使用
- linux下GNU、G++编辑器的安装及基本使用
- linux下GNU、G++编辑器的安装及基本使用
- Linux下G++怎么编译使用Boost库的程序
- linux 环境下 G++编译cpp文件
- linux 下用G++编译C++
- Linux下用g++编译c程序
- linux下编译器gcc/g++编译步骤
- linux下编译器gcc/g++编译步骤
- 【JavaScript】数据类型检测
- 比较四个数的大小,并最后显示最大数和最小数
- Android-踩坑之路-全屏-沉浸式
- 网络基本概念之网络分层
- LintCode372: 在O(1)时间复杂度删除链表节点
- Linux下g++基本的编译
- Laravel安装第三方扩展包 mews/captcha
- 第十一周作业:GUI简单界面--浏览器
- Balancing Act (树形dp+树的重心)
- tf.argmax(input, axis=None, name=None, dimension=None)
- Eclipse如何连接数据库---JDBC
- 广搜法做暴力的奥数题
- CodeForces
- 给定N中物品和一个背包。物品i的重量是Wi,其价值位Vi ,背包的容量为C。问应该如何选择装入背包的物品,使得转入背包的物品的总价值为最大?对每种物品i只有两种选择,即装入背包和不装入背包