编译
壮二宝
这个作者很懒,什么都没留下…
展开
-
C++中两个类相互包含引用问题
在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型class A{int i;B b;}class B{int i;A* a;}请注意上面的定义内容,一般情况下是不能出现类A,类B相互引用都定义对象,即如下的样子:class A转载 2016-12-05 09:56:13 · 299 阅读 · 0 评论 -
centos7 关闭防火墙
sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service原创 2018-04-02 16:01:17 · 250 阅读 · 0 评论 -
core文件的生成
ulimit -c unlimitedecho "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern原创 2018-04-02 15:51:01 · 531 阅读 · 0 评论 -
ldd命令用于打印程序或者库文件所依赖的共享库列表
ldd ldd命令用于打印程序或者库文件所依赖的共享库列表。--version:打印指令版本号;-v:详细信息模式,打印所有相关信息;-u:打印未使用的直接依赖;-d:执行重定位和报告任何丢失的对象;-r:执行数据对象和函数的重定位,并且报告任何丢失的对象和函数;--help:显示帮助信息。原创 2018-04-08 10:41:49 · 339 阅读 · 0 评论 -
linux下g++ 编译时动态库和静态库的链接和头文件问题
转自:https://blog.csdn.net/shitangdejiaozi/article/details/51028938原来编译的时候都是用的很随意,没用系统的总结一下,这几天在编译的时候遇到一些下问题,于是就总结一下,省得过几天又给忘了。1.动态库和静态库简介静态库在程序链接的时候会自动的链接到程序里,所以一旦编译完成,静态库就不需要了,静态库以.a转载 2018-03-30 09:35:21 · 2752 阅读 · 0 评论 -
gcc/g++编译优化
1. 介绍什么是CFLAGS和CXXFLAGS人们用环境变量CFLAGS和CXXFLAGS来告诉GNU编译器集合(GNU Compiler Collection),即gcc,在编译源代码时使用哪些选项。CFLAGS用于C代码,CXXFLAGS用于C++代码。 它们可以用来减少程序的调试信息数量,增加错误警告等级以及优化代码的生成。GNU gcc手册上维护着一个可用的选项及其作用的完整转载 2017-11-20 15:25:17 · 341 阅读 · 0 评论 -
C/C++程序编译过程详解
C/C++程序编译过程详解C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织,形成最终生成可执行代码的过程。过程图解如下:从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对转载 2017-11-13 14:51:06 · 59636 阅读 · 6 评论 -
从 Hello World 说程序运行机制
开篇学习任何一门编程语言,都会从Hello World 开始。对于一门从未接触过的语言,在短时间内我们都能用这种语言写出它的hello world。然而,对于hello world 这个简单程序的内部运行机制,我相信还有很多人都不是很清楚。 hello world 这些信息是如何通显示器过显示的?cpu执行的代码和程序中我们写的的代码肯定不一样,她是什么样子的?又是如何从我们写的代码变转载 2017-01-12 09:51:26 · 310 阅读 · 0 评论 -
【知其所以然】-对链接的思考
引言:写一段程序很容易、也能很容易的得到一个能正确运行的执行、学习语言很容易,难的是掌握它不管接触什么语言,最经典的入门例子大概就是“hello world”了。然而,对于“hello world”背后的东西、当时却不曾深究。作为做程序的普通小菜、我仍醉心于基础和底层的东西。诚然、我也认为这些东西很重要。练好“内功”、有扎实的底层基础才能走的更快更远。 知其转载 2016-12-21 20:19:11 · 251 阅读 · 0 评论 -
编程基础-----c++与c调用so文件/C和C++之间so库的互相调用/GCC -lm 是什么意思
1.制作so文件:libadd_c.soadd.c:[cpp] view plain copy print?int add(int a, int b) { return a + b; } 编译:gcc -shared -fpic -lm -ldl -o libadd_c.so add.c转载 2016-12-21 11:33:49 · 3727 阅读 · 0 评论 -
我使用过的Linux命令之ar - 创建静态库.a文件/关于Linux静态库和动态库的分析
用途说明创建静态库.a文件。用C/C++开发程序时经常用到,但我很少单独在命令行中使用ar命令,一般写在makefile中,有时也会在shell脚 本中用到。关于Linux下的库文件、静态库、动态库以及怎样创建和使用等相关知识,参见本文后面的相关资料【3】《关于Linux静态库和动态库的分析》。 常用参数格式:ar rcs libxxx.a xx1.o xx2.o转载 2016-12-21 13:32:20 · 4115 阅读 · 0 评论 -
编译器的工作过程和原理
源码要运行,必须先转成二进制的机器码。这是编译器的任务。比如,下面这段源码(假定文件名叫做test.c)。#include int main(void){ fputs("Hello, world!\n", stdout); return 0;}要先用编译器处理一下,才能运行。$ gcc test.c$ ./a.outHello, world!转载 2016-12-05 09:22:55 · 3905 阅读 · 0 评论 -
头文件重复包含和变量重复定义
在c或c++中,头文件重复包含问题是程序员必须避免的问题,也是很多新手容易犯错的问题。为什么要避免头文件重复包含呢? 1.我们知道在编译c或c++程序时候,编译器首先要对程序进行预处理,预处理其中一项工作便是将你源程序中#include的头文件完整的展开,如果你有意或无意的多次包含相同的头文件,会导致编译器在后面的编译步骤多次编译该头文件,工程代码量小还好,工程量一大会使整个项目编译...转载 2018-08-07 10:22:45 · 2820 阅读 · 0 评论