2015-12-22 21:39
⁄ 工业·编程
⁄ 共 1631字
库文件依赖顺序
GCC在链接时对依赖库的顺序是敏感的,被依赖的库必须放在后面,比如liba.a依赖libb.a,必须写成liba.a libb.a,否则链接将出错。在库比较多依赖关系比较复杂或者相互依赖或者自己不清楚的情况下,可以使用下面的选项来强制GCC重复查找依赖库:
g++ -o tt tt.o -Xlinker "-(" -lws2_32 -lclsocketd -Xlinker "-)"
强符号和弱符号
在链接中,如果多个目标文件中含有相同名字的全局符号的定义...
GCC, 软件开发阅读全文
2015-12-21 21:36
⁄ 工业·编程
⁄ 共 1468字
在TCP/IP分层中,数据链路层用MTU(Maximum Transmission Unit,最大传输单元)来限制所能传输的数据包大小,MTU是指一次传送的数据最大长度,不包括数据链路层数据帧的帧头,如以太网的MTU为1500字节,实际上数据帧的最大长度为1512字节,其中以太网数据帧的帧头为12字节。
当发送的IP数据报的大小超过了MTU时,IP层就需要对数据进行分片,否则数据将无法发送成功。
IP分片的实现
IP分片发生在IP层,不仅源端主机会进行分片,...
网络编程阅读全文
2015-12-20 21:33
⁄ 工业·编程
⁄ 共 1209字
最近使用GDB比较多,发现除了最常用的run、break、continue、next等命令的基本用法外,还有一些非常有用的命令和用法,能让你更加得心应手地使用GDB,在这里做了一下简单的总结。
1. run
当GDB的程序需要带参数运行时,除了使用set args外,还可以直接在run(r)后面带上参数,如下面两种方式是等价的:
2. set follow-fork-mode
有时候会发现GDB无法跟踪到设置的断点,原因可能是需要调试的进程是daemon进程或者fo...
GDB, 软件调试阅读全文
2015-12-19 21:31
⁄ 工业·编程
⁄ 共 5969字
编译过程
在Linux下使用GCC将源码编译成可执行文件的过程可以分解为4个步骤,分别是预处理(Prepressing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。一个简单的hello word程序编译过程如下:
1. 预处理
首先源代码文件(.c/.cpp)和相关头文件(.h/.hpp)被预处理器cpp预编译成.i文件(C++为.ii)。预处理命令为:
gcc –E hello.c –o hello.i
预编译过程主要处理那些源代码中以#开始的预编译指令,主要处理...
linux, 软件开发阅读全文
2015-12-18 21:27
⁄ 工业·编程
⁄ 共 23290字
Linux下C程序的编辑,编译和运行以及调试
要使用的工具:
编辑:vim(vi)
编译和运行:gcc
调试:gdb
安装很简单(以下是以在CentOS中安装为例):
yum vim gcc gdb
1.使用vim编辑源文件
首先,打开终端练下手:
1 vim hello.c
(进入一般模式)
按下"i",进入编辑模式,在编辑模式下输入:
1 #include <stdio.h>
2 ...
linux, 软件开发阅读全文
2015-12-17 21:10
⁄ 工业·编程
⁄ 共 3595字
一:gcc与g++比较
编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而 c++代码用g++,或者说编译用gcc,链接用g++,一时也不知哪个说法正确,如果再遇上个extern "C",分歧就更多了,这里我想作个了结,毕竟知识的目的是令人更清醒,而不是更糊涂。
误区一:gcc只能编译c代码,g++只能编译c++代码
两者都可以,但是请注意:
1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;...
g++, 区别阅读全文
2015-12-16 20:59
⁄ 工业·编程
⁄ 共 1422字
gcc & g++现在是gnu中最主要和最流行的c & c++编译器 。g++是c++的命令,以.cpp为主,对于c语言后缀名一般为.c。这时候命令换做gcc即可。其实是无关紧要的。 其实编译器是根据gcc还是g++来确定是按照C标准还是C++标准编译链接。
下面以Test.cpp为例:
命令: g++ Test.cpp 功能:生成默认为a.exe的文件,这个过程包含了编译和链接。 再说下-o命令,-o命令表示输出的意思,gcc/g++命令是非常灵活的,你不指定输...
g++, linux阅读全文
2015-12-15 23:09
⁄ 工业·编程
⁄ 共 463字
当你安装centos服务器版本的时候,系统默认是不会安装 CentOS 的图形界面程序的,比如:gnome或者kde, 那么如果你想在图形界面下工作的话,可以手动来安装CentOS Gnome GUI包,本文将会讲述如何在CentOS 7 系统下安装gnome图形界面程序。
在安装Gnome 包之前,我们需要先检查下安装源是否正常,因为我们要通过yum命令来安装gnome包, 而yum命令式通过yum 源来下载安装包的。
1.在命令行下输入下面的命令来安装 Gnome 包
...
CentOS, 安装阅读全文
2015-12-14 15:34
⁄ 工业·编程
⁄ 共 2674字
经常有新接触Linux 的同学问,“Linux 从哪里下载啊?”这种问题,对于熟手来说要么不屑一提,要么就引来了各种 Linux 发行版之争,让初学者无所适从。
其实,对于新接触 Linux 的人来说,很多人都不知道 “Linux” 原来不是一个!而是有林林总总上千种发行版,甚至你乐意的话,都可以制作发行自己的发行版。而各种不同的发行版也各有特色,还层出不穷的推出新版本。这简直让初学者如置身森林,茫然不知所措~
所以,这里整理了一份...
linux阅读全文
2015-12-13 22:04
⁄ 工业·编程
⁄ 共 5109字
循环冗余校验(CRC)是一种根据网络数据封包或电脑档案等数据产生简短固定位数的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。
循环冗余校验(CRC)是一种根据网络数据封包或电脑档案等数据产生简短固定位数的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。它是由W. Wesley Peterson在他1961年发表的论文中披露。[来自维基百科]
CRC校验的基本思想是利用线性编码理论,在发送端...
boost库, CRC阅读全文