Linux下C和C++开发
lsdmx2016
这个作者很懒,什么都没留下…
展开
-
对命名的Unix Domain Socket的认识(一)
命名的Unix Domain Socket,是相对于未命名的Unix Domain Socket(socketpair)而言的。Unix Domain Socket 主要用于进程间通信,和网络Socket 相比它不依赖于具体的网络协议。它可以将应用层的数据从一个进程拷贝到另一个进程。它主要分为面向流和面向数据包两种模式(类似于TCP和UDP)。 命名的Unix Domain Socket 需要原创 2013-01-04 13:43:19 · 3305 阅读 · 0 评论 -
对recv和send的认识
1.ssize_t send (int s,const void *msg,size_t len,int flags); s,发送端Socket描述符。 msg,表示要传输的消息 len,表示要传输的字节数 flags,一般为0 0: 与write()无异 MSG_DONTROUTE:告诉内核,目标主机在本地网络,不用查路由表 MSG_DONTWAIT:将原创 2013-01-06 10:52:20 · 1242 阅读 · 0 评论 -
Linux C 线程(一)
1.线程和互斥锁 相关函数 int pthread_create(pthread_t*restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg); int pthread_join(pthread_t thread, void **retval);/原创 2013-01-16 14:10:29 · 1088 阅读 · 0 评论 -
目标文件和可执行文件的区别
可执行文件也是一种目标文件。 UNIX环境下主要有三种类型的目标文件: 可重定位文件 其中包含有适合于其它目标文件链接来创建一个可执行的或者共享的目标文件的代码和数据。 共享的目标文件 静态链接库和动态链接库,在生成可执行程序和其他共享代码库的时候,它们的链接方式不同。 可执行文件 它包含了一个可以被操作系统创建一个进程来执行之的文件。 汇编程序生成原创 2013-05-20 16:04:02 · 6162 阅读 · 0 评论 -
静态链接库和动态链接库的区别
库文件本质上都是一系列的目标文件的集合,是共享代码的方式,可以称之为共享代码库。根据目标文件的链接方式,可以分为动态链接库和静态链接库 动态链接库,在生成可执行文件或者其他动态链接库的过程中,采用动态链接方式的库,动态链接库的文件的内容并没有被包含在可执行文件或者其他动态链接库中,链接程序记录文件的调用信息,在程序执行的时候才会将动态链接库的内容调入可执行文件的代码中。 静态链接库,在生成的可原创 2013-05-20 16:05:51 · 1013 阅读 · 0 评论 -
Linux下源程序的编译过程
1.源程序的编译过程 预处理过程 将源程序中的宏定义代码,头文件包含代码,替换成真实的实际代码 根据具体的宏定义,根据源程序中的条件编译代码,过滤掉多余的代码 处理源程序中的特殊符号,将特殊符号替换成合适的值 编译过程 根据不同的源文件,采用不同的词法分析和语法分析方式,在确认所有的指令都符合语法规则之后,将其翻译成等价的汇编代码。 汇编过程 是将汇编原创 2013-05-20 16:04:39 · 933 阅读 · 0 评论 -
gcc和g++的使用
gcc 和g++是GNU 的编译器 1.gcc 和g++编译程序主要分为四个步骤 预处理,生成 .i文件 编译,根据文件名后缀,确定编译方式,(.c,.cpp,.cxx),生成 .s文件 汇编,将.s 文件转换成.o文件(目标文件) 链接,对目标文件进行链接 2.gcc 和g++的区别 gcc 主要用于编译c文件,g++主要用于编译c++文件。 gcc 在碰到.c文件时,按照C 文原创 2013-05-07 16:51:59 · 887 阅读 · 0 评论