Linux/Unix C编程
文章平均质量分 83
逍遥子(。ˇε ˇ。)
上善若水
展开
-
Google Protocol Buffers介绍和总结
Google Protocol Buffers介绍和总结转载 2015-10-21 11:55:06 · 1254 阅读 · 0 评论 -
从Entry Point到main函数调用(3):_heap_init
_heap_init在(1)中提到过该函数用于分配一个堆。这个堆是动态创建的私有堆,与系统为进程分配的默认堆不同。进程启动时,系统会在进程虚拟地址空间中创建一个堆,即为进程的默认堆。默认堆的创建和回收均由系统来完成。除了默认堆,进程中还可以存在若干个私有堆。私有堆可以由进程动态创建,并且在此基础上进行内存分配、释放等操作。 _heap_init函数本质上是调用了HeapCr转载 2013-04-02 14:55:50 · 1420 阅读 · 0 评论 -
从Entry Point到main函数调用(2):GetVersion
之前(1)篇中大致介绍了mainCRTStartup,但是其中一些调用到的函数并未深究,现打算逐一剖析它们。 GetVersionGetVersion函数是kernel32.dll中提供的API,用于获取当前Win平台的版本。准确的说,GetVersion可以获得3个信息:1. OSPlatformId2. OSBuildNumber3. OSMin转载 2013-04-02 14:46:38 · 1032 阅读 · 0 评论 -
从Entry Point到main函数调用(1)
(1) 之前在调试exe时感觉很奇怪,为什么Entry Point并非直接进入到main函数。举例来说,如果将一段空的C代码build为exe:C代码 void main(){ } 编译环境为:VC6 release。再将该exe文件进行反汇编,那么从EP开始的代码部分大概形如:ASM代码push ebp…转载 2013-04-02 14:45:00 · 1026 阅读 · 0 评论 -
Intel 关于 Android 视频教程
Android ICS 模拟器在Ubuntu* 上安装并借助 KVM实现硬件加速执行的安装步骤http://software.intel.com/zh-cn/videos/android-ics-ubuntu-kvm? utm_campaign=CSDN&utm_source=intel.csdn.net&utm_medium=Link &utm_content=android-ubuntu转载 2012-12-30 23:49:47 · 642 阅读 · 0 评论 -
Windows 下使用 GNUstep 编译并运行 Objective-C 程序
今晚上开始看《Objective-C 程序设计(第4版)》这本书(OSChina 正在做此书的书评活动,详情请看这里),到现在为止看到第 7 章,于是想动手试试写两简单的程序编译跑跑看。不习惯 Mac,在 Windows 下装了个 GNUstep 也可以玩。非常简单的几步,你也来试试吧?1. 下载并安装 GNUstep下载地址:http://ftpmain.gnus转载 2012-11-27 15:21:38 · 855 阅读 · 0 评论 -
linux 下 C 编程和make的方法 (十、C版的try catch 捕捉段错误和异常处理)
哇塞,C语言有try catch吗?当然没有。倒。。可能有人说了,那你野鬼说没有的东西做什么。 这里需要重申一下,所谓正向设计下问题检测的开发方法。正向设计时,在错误检测和问题修复的方法是指: 根据源码分析,在源码中加插检测代码的方式,验证对代码的理解和预判是否正确。 而反向跟踪是根据机器执行动作,反向理解逻辑的运行状态,例如GDB。两者很多方转载 2012-11-11 23:48:25 · 1163 阅读 · 0 评论 -
linux 下 C 编程和make的方法 (九、malloc 和 free的功能补充)
我们回顾一下,前面的目标,如下: 1、可通过宏的方式,打开或关闭检测,当关闭时检测代码全部在编译时被拿掉。 2、检测的打开,尽可能的少的影响代码本身的运行效率。检测代码的是否工作和编译效率选项无关。 3、可以进行以下几种检测。 a、是否所有malloc都free了,且malloc和free的地址是一样的。 b、是否一个指针超出了指定的寻址范转载 2012-11-11 23:43:08 · 979 阅读 · 0 评论 -
linux 下 C 编程和make的方法 ( 八、测试模块的一个范例(上))
在继续处理,data_struct 模块前,我们需要一些工具。做什么用?开发用。客户需要吗?不需要。是什么?是代码。还好没开课,估计这三问三答,人都跑的差不多了。余下的是睡觉,聊天 的。但先等等。为什么说需要一些工具,而且是代码,而且客户不需要的。这是因为我们在linux下开发。我们没有IDE。哈,可能有人现在就开始装 ecplise了。别急,有了这些工具,可以解决很多问题,且不通过传统的debu转载 2012-11-11 23:21:28 · 973 阅读 · 0 评论 -
linux 下 C 编程和make的方法 (七、从项目组织化开发谈make操作模块)
说make不行了。至少我快受不了了。如同学会骑自行车的人,你让他故意摔跤,确实挺折磨人的。到现在,我们有两个目录,两个模块,分别如下: 01learn_make/02|-inc/03|-src/04|-obj/转载 2012-11-11 23:16:07 · 733 阅读 · 0 评论 -
linux 下 C 编程和make的方法 ( 六:补充 关于搭窝)
前面堆了一堆代码,说件让刚码过的朋友吐血的事,就上面这些代码我没有写一行,除了一些修改,整体就是COPY。从哪COPY来的,后面会说。先谈搭窝。 这事得从资源利用说起。我说了。大家的智商都差不多,你想做的更好,就得利用好你的脑袋的资源聚焦在一点上。有经验的老鸟能处理大项目,没经验的菜鸟,一 碰到复杂点点的,就完了。差异除了老鸟有知识技术方面的积累外,还有工作方法的经验。复杂的东西,转载 2012-11-11 23:13:13 · 850 阅读 · 0 评论 -
linux 下 C 编程和make的方法 (六:一个C模块的实现)
我们就先做个tree 模块吧,这里说下讲TREE的理由,很简单,如下 1、tree相对复杂点,我就说个堆栈,恐怕可以展开的东西不多。 2、正在把文件生命周期管理的中间件进行开源。正好用tree开刀。 3、tree好啊,文件夹里大把天然的测试数据,我省得造数据的麻烦了。 4、不是菜鸟经常被别人说“去看内核源码”,那好吧,既然你们总被喷,不如咱们也从tr转载 2012-11-11 22:46:09 · 948 阅读 · 0 评论 -
linux 下 C 编程和make的方法 (五、准备写C代码)
停下make的说明讲解。因为我讲得再多,就有点形而上学了。为了说明而说明。如果单就一个工程,一个src目录,上面的make说明,足以利用make 完成代码编译等开发工作了,且不谈版本发布问题。同时,我还是希望交叉点,既然是linux 下的C编程和make。则也要说说C。选来选去,决定说说树。因此,先从tree说起。但在写C代码之前,我们得谈谈怎么样才算是个好代码,或者相对好点 的代码,怎么规划代码转载 2012-11-11 22:43:47 · 1109 阅读 · 0 评论 -
linux 下 C 编程和make的方法 (四、开始make)
终于开始make了 make 是个命令,先谈一下,为什么要make? 首先的理由就是,你可以将前面很多gcc的命令行,汇总起来,并且一次确认,多个命令自动运行。我相信很多人说我在忽悠。这就是个“批处理”,就是加上复杂的变量替换,条件执行,也就是个脚本。没错,make首先就是个脚本分析执行的工作。 但make有优势的地方在于依赖的检查。什么是依赖,初学者看GNU转载 2012-11-11 22:41:31 · 956 阅读 · 0 评论 -
linux 下 C 编程和make的方法 (三、工程文档的组织)
一些新手搞不清楚工程,和源代码,C文件,头文件的区别。这里特地为新手说明一下: 无论你是否写过程序。你从用过软件。你会发现很少一个软件就一个文件。你可以在window下看一下某个具体软件的位置,并在这个位置打开文件夹,会发现 有很多文件。从设计软件或程序的开发角度也是一样的,一个程序很多情况下,除非足够简单,你只用一个C文件即可。例如: 1int转载 2012-11-11 22:30:30 · 624 阅读 · 0 评论 -
inux 下 C 编程和make的方法 (二、基础准备:编译与连接&GCC)
前期最基本的知识: 关于目标,我们要写个程序。可以有很多用途。但绝大多数情况下,是为了运行。我们运行的目的,不是为了RUN。估计没有哪个人会如此写个函数 1while (1){2 i++;3 }转载 2012-11-11 22:27:59 · 990 阅读 · 0 评论 -
Linux编程:Makefile missing Separator.的解决办法
以前编程都是在Windows下,集成开发环境,具体的编译设置一般情况下默认的设置就OK了,现在想转到Linux下编程,没想到一个简单的Makefile文件就拦住了去路,单独编译链接都没有问题,编写成Makefile就出了问题,错误提示:Makefile:2: *** Missing separator. stop怎么看Makefile文件感觉都没有问题,但是出错,那肯定就有问题了,为了说明转载 2012-05-29 15:16:59 · 4742 阅读 · 0 评论 -
Using Intel® C++ Compiler with the Eclipse* IDE on Linux*
ContentIntroductionRequirementsInstalling the IntegrationUsing Intel C++ Eclipse ExtensionCreate New ProjectConvert Existing ProjectFirst Time UseUpdating Intel C++ Compiler VersionCon转载 2014-01-14 15:34:27 · 2972 阅读 · 0 评论 -
C/C++回调函数简要介绍
1、引子在C/C++里面有个非常给力的库函数qsort,相信大家都用过。他的函数原型如下:void qsort(void *base,size_tnmemb,size_tsize, int(*compar)(constvoid*, constvoid*));使用的时候需要传递需要排序的数组base, 数组数目nmeb, 每个数组大小size,以及我们比较自定义的回调函转载 2014-02-17 14:43:01 · 1291 阅读 · 0 评论 -
C++读写二进制文件
摘要:使用C++读写二进制文件,在开发中操作的比较频繁,今天有幸找到一篇文章,遂进行了一些试验,并进行了部分的总结。 使用C++操作文件,是研发过程中比较频繁的,因此进行必要的总结和封装还是十分有用的。今天在网上找到一篇,遂进行了部分的试验,以记之,备后用。 本文读写文件均使用文件流进行操作,主要使用的类是ifstream, ofstream, 使用时,请务必包含文件fstre转载 2015-05-04 17:26:49 · 899 阅读 · 0 评论 -
Determining whether or not a polygon (2D) has its vertices ordered clockwise or counterclockwise
Determining whether or not a polygon (2D) has itsvertices ordered clockwise or counterclockwiseWritten by Paul BourkeMarch 1998The following describes a method for determining whether or not转载 2015-04-16 15:37:13 · 877 阅读 · 0 评论 -
用C读取INI配置文件
在Windows下可以用GetPrivateProfileString或GetPrivateProfileInt方便读取.ini配置文件内容,但是在Linux平台上就一筹莫展了。为了解决该问题,打算用C来读取.ini,即可不受平台的限制了。#define CONF_FILE_PATH "Config.ini"#include #ifdef WIN32#include转载 2015-03-10 17:25:53 · 823 阅读 · 0 评论 -
将'const xxx'作为'xxx'的'this'实参时丢弃了类型限定
这样的错误一般是因为const限定符的问题。################a.h###############class A{public:size_t size(){return size;}};################main.cpp###########void print(const A& a){cout }A a;转载 2015-03-09 10:43:58 · 4295 阅读 · 0 评论 -
Ubuntu下编译boost(附Eclipse静态链接库设置)
这不是一篇向导,全面的向导请看这里 (http://goo.gl/XcAf)。 这仅是一篇笔记。这里用bjam方式 进行编译。 下载boost。(http://cdnetworks-kr-1.dl.sourceforge.net/project/boost/boost/1.42.0/boost_1_42_0.tar.bz2)解压到指定文件夹,我是将它解压到根转载 2015-01-05 17:04:46 · 894 阅读 · 0 评论 -
节对齐与结构体大小
说明:结构体的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题。这些问题在平时编程的时候也确实不怎么用到,但在一些笔试面试题目中出是常常出现,对sizeof我们将在另一篇文章中总结,这篇文章我们只总结结构体的sizeof,报着不到黄河心不死的决心,终于完成了总结,也算是小有收获,拿出来于大家分享,如果有什么错误或者没有理解透的地方还望能得到提点,也不至于转载 2015-02-05 17:43:41 · 744 阅读 · 0 评论 -
Ubuntu 下安裝 GTK
在撰寫這篇教學文件時正好在玩Ubuntu,這邊說明一下如何在Ubuntu下設定GTK開發基本環境。由於GTK基本上主要以C語言來撰寫,您必須有C編譯器,Ubuntu預設安裝好後就有gcc了,不過缺少必要的Header file,您可以在文字模式下,安裝build-essential套件,例如:sudo apt-get install build-essential安裝完转载 2015-02-05 12:11:21 · 935 阅读 · 0 评论 -
ubuntu apt-get install -f 错误: Can't exec "local...
Can't exec "locale": No such file or directory at /usr/share/perl5/Debconf/Encoding.pm line 16.Use of uninitialized value $Debconf::Encoding::charmap in scalar chomp at /usr/share/perl5/Debconf/Encod转载 2015-01-05 16:10:45 · 2138 阅读 · 0 评论 -
UBUNTU13 + Skyeye1.3.5
1准备安装必要的工具$sudo apt-get install automake autoconf libtool g++libxft-dev libx11-dev libxpm-dev texi2html2.安装skyeyecd Downloads/skyeye-1.3.5_rc1/Downloads/skyeye-1.3.5_rc1$ lsaclocal.m4转载 2015-02-01 00:30:00 · 1386 阅读 · 0 评论 -
Ubuntu 12.04 安装 gcc-4.8 及 gdb 7.6
1. 安装 gcc-4.8 为了使用C++ 11, 须安装 gcc-4.8 以上版本.按以下命令即可方便的安装 gcc-4.8 及 g++-4.81sudo add-apt-repository ppa:ubuntu-toolchain-r/test2sudo apt-get update转载 2014-04-06 01:23:27 · 2228 阅读 · 0 评论 -
Ubuntu 13.04 安装 GCC4.8.1
下面的步骤可以安装GCC4.8.1, 内容来自:http://askubuntu.com/questions/312620/how-do-i-install-gcc-4-8-1-on-ubuntu-13-04sudo add-apt-repository ppa:ubuntu-toolchain-r/testsudo update-alternatives --remove-all gcc转载 2014-04-05 22:49:48 · 2049 阅读 · 0 评论 -
在Ubuntu13.10上自己动手搭建交叉编译环境arm-linux-gcc-4.8.2
编译环境: 内核名称:Linux 硬件架构名称:i686 硬件平台:i386 操作系统:Ubuntu 13.10 当前系统gcc版本号:4.8.1一、准备工作1、下载源码包binutils-2.23.1.tar.bz2gcc-4.8.2.tar.bz2glibc-2.18.tar.bz2glibc-lin转载 2014-04-02 00:53:02 · 2129 阅读 · 0 评论 -
Linux内核学习四库全书
关于内核学习我建议不要上来就读内核而是先了解内核的构成和特性,然后通过思考发现疑问这时再去读内核源码。即先了解概貌在读局部细节。而且内核分成好多部分,不要只是按照顺序去读,应该针对某一部分比如内存管理或进程管理横向读几本书,这样可以理解很全面。Linux Kernel 四库全书1. Linux内核设计与实现 Edition 2 2. Linux设备驱动 Edition转载 2014-03-13 11:38:11 · 1259 阅读 · 0 评论 -
Linux网络编程必看书籍推荐
首先要说讲述计算机网络和TCP/IP的书很多。 先要学习网络知识才谈得上编程讲述计算机网络的最经典的当属Andrew S.Tanenbaum的《计算机网络》第五版,这本书难易适中。《计算机网络(第5版)》是国内外使用最广泛、最权威的计算机网络经典教材。目前已经是第五版,本书作者80年代就开发出MINIX,是一个用于操作系统教学的类UNIX(的小型操作系统。而转载 2014-03-13 11:39:09 · 1257 阅读 · 0 评论 -
linux 下 C 编程和make的方法 (一、综述:为什么学这些)
一、综述 这里回答几个问题。如下: 为什么在linux下,为什么针对C,为什么要用make? 本文主要针对谁? 建议阅读本文的方法? 为什么说是弱智版? 为什么在linux下,我的态度是,linux更干净,更“标准”。这两个特点可以保证学习者所投入时间精力所学习到的东西,能保持的更久。经典的虽然不够吸引人,但流行的来也匆匆转载 2012-11-11 22:25:44 · 898 阅读 · 0 评论 -
第6章,数组,指针,字符串(中)
指针,其实没什么难的,特别是对指针的理解,好学生,背背,考试100分。难的在于书写习惯和设计方法。原理理解了,对于指针的使用,养成良好习惯,等你能力提升后,自然可以使用的游刃有余。例如刚开始打键盘,确定好十个手指的位置,或许一开始你很郁闷,每个字母都要去回忆在哪个位置,应该用那个手指,但熟练后呢? 那么对于指针的良好习惯究竟有哪些?其实很多,而且和功夫一样,分门派的,没个标准答案,无非看转载 2012-11-12 14:06:05 · 1216 阅读 · 0 评论 -
学习linux/unix编程方法的建议,学习Linux的四个步骤
学习linux/unix编程方法的建议,学习Linux的四个步骤文章分类:操作系统 假设你是计算机科班出身,计算机系的基本课程如数据结构、操作系统、体系结构、编译原理、计算机网络你全修过 我想大概可以分为4个阶段,水平从低到高 从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码 其中学习linux常用命令时就要学会自己编译内核,优化系统,调整转载 2012-11-12 14:05:20 · 528 阅读 · 0 评论 -
Ubuntu右键打开终端
ubuntu增加右键命令在当前位置打开终端 sudo apt-get install nautilus-open-terminal 可能需要重启 转自:http://my.oschina.net/rockbaby/blog/14710转载 2012-07-19 10:49:55 · 604 阅读 · 0 评论 -
Ubuntu12.04 更新源
1、首先备份Ubuntu 12.04源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (备份下当前的源列表,有备无患嘛) 2、修改更新源 sudo gedit /etc/apt/sources.list (打开Ubuntu 12.04源列表文件) 3、将下面的代码粘贴进去(“#”开头的那一行为注释,可以直接转载 2012-07-19 10:48:37 · 518 阅读 · 0 评论 -
关于基于Windows模拟Linux C编译环境心得
平台:Windows XP参考:http://sourceforge.net/apps/mediawiki/zbar/index.php?title=HOWTO:_Compile_with_MinGW_in_Windows近日工作需要,研究了下如何基于Windows配置Linux C编译环境,总结如下心得备忘,当然,不免有些尚待完善部分,欢迎朋友们指正,谢谢!1、第一步:安装Min原创 2012-05-25 13:08:58 · 1267 阅读 · 0 评论 -
mingw+msys+GTK编译
http://www.mingw.org/wiki/msys1:下载MinGW-5.1.4.exe运行,自动下载并安装2:MSYS-1.0.10.exe 安装3:msysDTK-1.0.1.exe 安装4:msysCORE-1.0.11-2007.01.19-1.tar.bz2msysCORE是补丁,所以覆盖在源安装上,下同5:bash-3.1-MSYS-1.0.1转载 2012-05-24 18:55:54 · 1168 阅读 · 0 评论