本文主要是介绍【软件工具】编译原理简介与工程实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
引论
-
静态VS动态
有3个角度:策略、作用域、内存位置。静态策略即编译时刻判定,动态策略即运行时刻。
名字、位置、值,两者之间通过环境、状态两种映射来表示。静态与动态作用域
动态策略处理时间的方式与静态作用域处理空间的方式类似。过程、函数与方法
函数是一种有返回值的过程,方法表示过程或函数,但总是和类相关联。 -
编译技术的应用
高级程序设计语言:Java没有指针和指针运算。
针对计算机体系结构的优化,高性能系统的两类技术:并行、内存层次。
简单的语法制导翻译器
语法可以指导程序的翻译。
上下文无关文法,或文法:用于描述语法的表示方法。文法被用于编译器的前端。
箭头表示“具有如下形式”。
终结符号:数、运算符、关键字。
非终结符号:名字。
文法不是具体的程序,表达的是规则。如,产生式,
l i s t → l i s t + d i g i t list \rarr list + digit list→list+digit
表示这样的规则:任何一个列表后跟一个符号+以及另一个数位,可产生一个新列表。
语法树
工程
gcc
gcc是C Compiler(C 编译器),g++是C++ Compiler(C++编译器)。
设置调试模式
g++ -g ...
使用OpenCV库
g++ ... $(pkg-config --libs opencv)
CMake
cmake -DWITH_ADE=OFF -DCMAKE_BUILD_TYPE=Release ../../
set(CMAKE_BUILD_TYPE Release)
调试工具
- gdb, 用于调试C++
- pdb, Python
问题
- 程序编译为动态库,其依赖的程序库为静态库,编译错误,将要编译程序改为静态库解决,有么有办法使得动态库依赖静态库?
这篇关于【软件工具】编译原理简介与工程实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!