编译原理
浪子荆
致力于音视频的编码,解码,传输等。
展开
-
利用反汇编帮助查找段错误
当程序运行时经常会发生段错误,如果在linux系统,可以利用core dump文件,用gdb来帮助查找,前面已经有介绍过这种方法,如果不是linux系统,则很多时候不能使用gdb,则可以利用反汇编来查找出错的位置,一般段错误会打印出出错的指针位置,如下: Oops: Data Abort caused by READ instruction! Fault: Alignment fault pc原创 2017-11-15 15:19:36 · 1849 阅读 · 0 评论 -
gcc编译参数
1.gcc -static main.cpp -o staticBuild -static就是静态链接,好处是可移植性好,不依赖其他库就可以运行,坏处是binary比较大。 2.原创 2017-11-16 21:48:24 · 2511 阅读 · 0 评论 -
linux编译工具(二进制分析工具)的使用
1.objdump -x -j .bss demoApp 对bss节进行反汇编操作。 2.原创 2017-11-14 22:43:35 · 1616 阅读 · 0 评论 -
linux系统编译链接总结--高级c/c++编译技术读后总结(上)
最近学习了《高级c/c++编译技术》,收获良多,现总结如下: 1.编译环节是将c或c++程序编译成二进制文件,在linux中一般为.o文件,每个源文件编译为一个.o文件。链接:是根据包含关系将.o文件组合起来,合并成一个二进制文件,该文件可为可执行文件,也可以为静态库或者动态库文件。该二进制文件会分为很多节,下面几个节是必须支持的: 代码节(.text):包含了供cpu执行的机器指令。 数据...原创 2017-11-13 21:37:50 · 915 阅读 · 0 评论 -
linux系统编译链接总结--高级c/c++编译技术读后总结(下)
本篇开始总结动态库设计的进阶篇。 一 : 动态库的设计,进阶篇 动态链接的重要原则就是不同进程共享同一个动态库的代码段,但不共享数据段。每个加载了动态库的进程都会提供一份自己的数据副本给动态库代码段使用。同时利用内存映射,将同一个动态库的代码段映射到不同的进程空间上。 1.由于动态库是运行的时候加载到进程的内存地址空间的,所以只有当运行时将该库加载到内存的时候,库中各个函数等的地址才能确定,...原创 2018-02-08 18:25:52 · 683 阅读 · 0 评论 -
json-c的交叉编译
第一次学习交叉编译,从最简单的json-c的开源库开始,json-c开源库是一个用c实现的解析json字段的库,可以从github上获取,我另一篇博客专门对这个库有介绍,此篇主要记录对json-c进行交叉编译到arm开发板上。我下载的是Json-c的4.0版本。 1.cd到json-c的目录 里面有一个autogen.sh的脚本,首先要运行这个脚本来产生configure文件。运行完这个脚本...原创 2018-04-09 10:12:17 · 5693 阅读 · 0 评论 -
交叉编译
这里记录一些交叉编译的一些知识 1.https://blog.csdn.net/openblog/article/details/7449991 解决交叉编译依赖的方法。 2. https://blog.csdn.net/AtlanticEvix/article/details/4824453 linux库的一些交叉编译的方法...原创 2018-04-09 11:27:10 · 145 阅读 · 0 评论 -
编译lua库
lua官网提供了一个解析lua的库,地址为 https://www.lua.org/download.html,我们可以下载该库的源码。 这个源码比较简单,readme里面也提供了编译的方法,但是默认的编译只编译为一个静态库,不能编译为动态库,如果想编译为动态库,需要修改他的makefile。修改内容如下: 1. 修改根目录下的Makefile文件 TO_LIB= liblua.a 修改...原创 2018-06-06 11:47:43 · 830 阅读 · 0 评论