linux下的C语言编程
学习
别人的C++学习过程比较仔细的学习了《c++primer》,并对每个习题都自己写代码实现了一遍,包括稍微复杂一点的例子。
认真读完了《effective c++》,《effective stl》。
比较仔细的学完了《数据结构与算法分析》,并把其中的每种数据结构和算法都用c++实现了一遍。包括各种线性表,树(二叉树、AVL树、RB树的各种操作),图(BFS、DFS、prim、kruskal、djkstra、floyd、拓扑排序、关键路径等)查找算法,排序算法。
2-3个月认真学完《csapp》并做完书上的课后习题(由于时间的关系,没有在做家庭作业),顺带学习了一些gcc的嵌入汇编的用法。
读完了《深度探索C++对象模型》,对象C++底层实现机制有了一定的了解。
读完了《TCP IP详解卷一》
读了《APUE》的大部分内容以及《UNP卷一》有关TCP/UDP的部分,略过了SCTP的部分。
研究学习 @陈硕的muduo网络库源码,受益良多,在期间发现过其中的一两个小问题,提了几个pull request,研究完了muduo源码后又看了其相关的书《Linux多线程服务端编程 (豆瓣)》
学习了云风的skynet网络库的小部分源码,主要为了了解actor模式和reactor的异同。
学习了google test框架的部分源码,弄懂了内部的的运行原理。
刷《剑指offer》的所有习题。
刷leetcode,代码在liyuan989/leetcode · GitHub,由于时间的关系大约刷了130道就开始找工作了。
关于练手项目,写了简易STL,C++协程库,以及一些http server,rpc之类的。
平凡的程序员: linux下的C语言开发系列博文
--
(开篇)gcc hello.c -o hello
gcc hello.c -g -o hello
objdump -S -d ./hello
(makefile编写)
首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)。