凯里建设网站广州百度推广代理公司
一、定义
编译:
“““
编译器是一种翻译程序,它用于将源语言(即用某种程序设计语言写成的)程序翻译为目标语言(即用二进制数表示的伪机器代码写成的)程序。后者在windows操作系统平台下,其文件的扩展名通常为.obj。该文件通常还要经过进一步的连接,生成可执行文件(机器代码写成的程序,文件扩展名为.exe)。通常有两种方式进行这种翻译,一种是编译,另一种是解释。后者并不生成可执行文件,只是翻译一条语句、执行一条语句。这两种方式相编译比解释运行的速度要快得多。
”””
“““
在汇编里称link,在C里叫build,它的作用是生成可执行的exe文件。由于一个程序的源码可由多个文件组成。这些文件在第二步中分别编译,生成各自的目标文件(*.obj),这一步的作用便是将这些obj文件,以及程序中需要的其它库文件(dll除开),统一到一个文件中来,形成单个的exe文件。此exe文件便可以在操作系统下直接运行了。
”””
程序员程序——(编译)——伪机器代码——(链接)————机器代码
build文件:连接/生成,描述编译工具链,生成可执行(execute)文件
交叉编译:在一个平台上生成另一个平台上的可执行代码
bazel:google推出的一款工程编译工具
编译的五个过程
词法分析
语法分析
语义分析与中间代码产生
优化
目标代码生成
三、编译的目的
编译目标为不同平台(32位/64位的Linux/ios/Windows)及不同模式(发布模式/调试模式/个人测试模式)
举个例子:将服务器或pc上训练好的模型,与数据打包,push到手机上,使用编译好的目标平台的工具加载并运行模型
四、相关的环境变量
LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,与之相对应的,LD_LIBRARY_PATH是程序运行期间用到的库。
五、CMAKE
https://www.cnblogs.com/cv-pr/p/6206921.html
参考链接:
https://blog.csdn.net/sundingh/article/details/78714245
https://www.cnblogs.com/jojodru/p/7744630.html
https://blog.csdn.net/janeqi1987/article/details/74346986