编译过程简介

librdkafka编译及简单使用过程简介 librdkafka 使用了 C++11,使用 VS2010 无法编译,需要使用更高版本的 VS 才能编译,我这里使用的是 VS2017。 1、编译版本 编译环境:windows VS2017 openssl 版本:openssl-1.0.2t(如果不想编译,可下载 Win32OpenSSL-1_0_2t.exe安装,同时编译库文件路径不使用 …\lib\VC\static,改为…\lib\VC即... 阅读详情

        之前做了一次在Android上的移植,后来多次被人问到移植的相关问题。正好做完那个项目很久了也没有认真的把编译的知识进行单纯的整理。有很多问题没有总结在此,是因为我没遇到。有些知识还是需要用到的时候再学也为时未晚的。好了不罗嗦了,开始对编译的过程进行简单的总结吧。

        linux应用程序编译时,需要交叉编译GCC,它依赖于所运行系统的内核、glibc库等。针对ARM处理器平台建立交叉编译环境,通常是要在pc上建立目标代码为ARM的编译交叉连(toolchains),它可以编译和处理Linux内核及应用程序。需要下面几个工具链的源码。

       -binutils,一组编译开发工具,包括连接器汇编器以及其他用于目标文件和档案的工具。它包括:

-----addr2line把程序地址转换为文件名和行号。在命令中给它一个地址和一个可执行文件名,它就使用这个可执行文件的调试信息之处在给出的地址上是那一个文件及行号。

------ar建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。

------as 主要用来编译GNU C编译器(gcc)输出的汇编文件,产生目标文件由连接器ld连接。

------c++filt ,连接器使用它来过滤c++和java符号,防止重载函数冲突。

------gprof显示程序调用段的各种数据。

------nm列出目标文件中的符号。

------objcopy把目标文件中的内容复制到另一种类型的目标文件中。

-----objdump显示一个或更多目标文件的信息。使用选项来控制其显示的信息。它所显示的信息很有用,可用它观察到程序中全局变量和函数编译所处的数据段和地址。

-----ranlib产生归档文件索引,并将其保存到这个归档文件中。在索引列出了归档文件个成员所定义的可重分配的目标文件。

----readelf显示elf格式包括可执行文件的信息。

----size列出目标文件每一段的大小以及总体的大小。

-----strings打印某个文件的可打印字符串。这些字符串最少4个字符长也可以使用选项-n设置字符串的最小长度。默认情况下,它只打印目标文件初始化和可加载段中的可打印字符;对于其他类型的文件,它只打印整个文件的可打印字符,这个程序对于了解非文本文件的内容很有帮助。

----strip丢弃目标文件中的全部或者特定符号。通常,连接完成的elf格式的文件是没有经过strip的,他/它包括符号表等多余信息,可使用这个工具让elf文件更精简。通常他会在应用程序的最后发布时使用。

     --gcc是linux中最重要的软件开发工具。它是gnu c和c++的编译器。利用gcc编译器可同时编译并链接c和c++源程序。

     --glibc,提供系统调用和基本函数的c库(标准c库)如open\mallloc、printf等。所有linux上的c程序编译时都需要与glibc库链接。如果是动态连接的程序,在运行时也要用到它。另外面对一些简单的应用,也可以使用更为精简的C库,如uClibc。

     --glibc-linuxthreads,POSIX(Portable Operating System Interface,可移植操作系统接口)线程库。

     --linux内核源码。

当然,你如果时间充足的情况下,完全可以试图自己去做一个交叉编译环境,但是本人曾试着努力过。但是花了近两个月的时间,最终因为课程的原因还是使用了现成的交叉编译链。

        首先需要明确在Android中存在两种交叉编译链,一个是arm-eabi-gcc;另一个是arm-none-linux-gnueabi-gcc。通常后面的支持的库函数相对多一点。但是Android本身使用的是前者。


7、编译过程简介 本文详细介绍了C++程序的编译过程,包括预处理、编译、汇编和链接四个主要阶段,并探讨了常见的编译错误与警告。同时,文章还深入讲解了如何通过高级编译技术(如编译缓存、并行编译、静态分析和交叉编译)提高开发效率和代码质量。此外,提供了多种编译器优化选项和安全性配置建议,帮助开发者生成高效且安全的可执行文件。 阅读详情

相关推荐

S32K144之芯片锁死解锁——进入HardFault

S32K144之芯片锁死解锁——进入HardFault 最近遇到因为软件代码问题导致进入HardFault,从而使芯片锁死,来简述具体现象以及最终的解锁方法。 导致原因:如下图,在进行Gpio的相关配置,case后面没有break语句,导致芯片进入HardFault。 现象1:reset引脚持续为低,reset指示灯常亮。如果掉电后重新上电,通过示波器抓取reset引脚的波形,会有510us左右或者29ms左右的低电平脉冲出现,一般会出现两三次左右并且没有规矩,持续几秒的高电平之后,reset脚再次被拉低

weixin_41935674的博客 8275

编译过程的五个阶段

编译程序的工作,从输入源程序开始到输出目标程序为止的整个过程,是非常复杂的。但就其过程而言,它与人们进行自然语言直接的翻译有许多相近之处。当我们把一种文字翻译为另一种文字,例如把一段英文翻译为中文时,通常需经下列步骤: (1)识别出句子中的一个个单词; (2)分析句子的语法结构; (3)根据句子的含义进行初步翻译; (4)对译文进行修饰; (5)写出最后的译文。 类似地,编译程序的工作过程一般也可以划分为五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化、目标代码生成。 第一阶段:词法

1万+

手把手教你用闲置安卓手机搭建个人收款系统(蓝鲸支付私有化部署实战)

本文详细介绍了如何利用闲置安卓手机搭建个人收款系统,实现私有化支付部署。通过开源技术栈和容器化方案,零成本构建安全、高效的支付网关,解决传统支付平台的数据安全和资金风险问题。特别适合个人开发者和小微企业主,无需复杂审批,资金实时到账,显著降低运营成本。

weixin_30363285的博客 380

编译过程概述

编译:源程序(高级/汇编)→编译器 →目标机器代码程序(二进制) 并行编译的应用:OpenMP Hadoop MPI并行程序设计:基于消息传递 1、什么是编译程序? 翻译程序:源语言(高级语言/汇编语言)=>邓海军的目标语言 (汇编语言,机器) 编译程序:高级语言 => 目标语言(汇编或者机器语言) (C java ) 汇编程序:汇编语言 => 机器语言...

yunyuzhu的博客 772

RK3588与银河麒麟V10 SP1 2403深度适配:国产化硬件与操作系统的完美融合

本文深入探讨了RK3588处理器与银河麒麟V10 SP1 2403操作系统的深度适配,展示了国产化硬件与操作系统的完美融合。通过性能验证和实际应用测试,证明了这套组合在多媒体处理、AI推理和日常办公中的卓越表现,实现了完全自主可控的计算平台。

weixin_29194255的博客 249

从零开始:用ADS 2023手把手教你设计2.4GHz Wi-Fi LNA(基于ATF-54143,附模型文件)

本文详细介绍了如何使用ADS 2023软件设计2.4GHz Wi-Fi频段的低噪声放大器(LNA),基于ATF-54143晶体管。内容涵盖模型导入、直流工作点确定、稳定性优化、噪声匹配等关键步骤,并提供可下载的模型文件包,帮助工程师快速掌握LNA设计技巧。

weixin_42531128的博客 320

编译过程详述

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 之前一篇文章介绍了编译程序,同时介绍了编译程序与解释程序的区别:https://blog.youkuaiyun.com/qq_43279782/article/details/117257197 大致介绍: 编译程序 编译程序将高级语言转化为低级语言。 一、编译过程 编译程序将高级语言...

不负韶话 4988

【银河麒麟服务器操作系统】安装英伟达4090D显卡驱动操作指南

本文详细介绍了在银河麒麟高级服务器操作系统V10SP3-2403-X86版本上安装NVIDIA RTX4090D显卡驱动的完整流程。主要内容包括:准备工作检查、开源驱动禁用、运行级别切换、依赖包安装以及交互式安装过程中的关键选项选择(32位库选Yes、X配置选No)。通过禁用nouveau驱动、重建内核引导等步骤确保驱动安装成功,最后通过nvidia-smi命令验证驱动安装情况。文档提供了操作检查表和安装流程图,帮助用户在银河麒麟系统上顺利完成显卡驱动部署。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 3104

编译原理_编译过程概述

文章目录概述词法分析语法分析语义分析中间代码生成代码优化目标代码生成符号表管理(表格管理)出错处理 概述 编译程序即是将高级语言书写的源程序翻译成与之等价的目标程序(汇编语言或机器语言)。其工作可分为六个阶段,见下图: 对于编译的各个阶段,逻辑上可以划分为前端和后端两部分。前端包括词法分析到中间代码生成中各个阶段的工作,后端则是优化及目标代码生成的阶段。 以中间代码为分水岭的原因是把编译过程分解...

小手挥墨 4971

Fiori Elements Analytical List Page 标题区配置全攻略:从变体、过滤模式到 UI.KPI 的工程化落地

ALP标题区是Fiori Elements Analytical List Page的核心交互区域,承担变体管理、过滤模式切换、KPI展示等关键功能。本文系统解析了标题区的组成结构、可用能力及工程实现要点,包括:1)标题区包含过滤类型切换、全局KPI、变体管理等交互元素;2)详细说明视觉过滤与紧凑过滤的同步规则及实现方式;3)介绍OData V2下通过UI.KPI注解配置标题区KPI的方法;4)提供manifest.json配置示例和CDS注解写法。文章还对比了V2与V4版本的差异,为ALP开发提供实用指导

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 245

单片机应用案例:ESP32 搭配 BH1750 光强传感器和 Web 服务器

在该应用案例中,我们将使用 ESP32 开发板作为主控制器,BH1750 光强传感器用于采集环境光强度数据,并通过 Web 服务器展示采集到的数据。步骤一:购买材料步骤二:连接硬件步骤三:编写代码我们将使用 Arduino IDE 编写代码,以下是主要代码:// WiFi 设置const char* ssid = “你的 WiFi 名称”;const char* password = “密码”;// Web 服务器实例// BH1750 实例// 获取当前光强度数据。

RlDart的博客 813

c++编译过程简介

c++编译过程简介

qq_42697866的博客 190

零基础做完YOLOv8船只检测系统:HRSC2016数据集 + 完整UI,稳过答辩

亲爱的同学,通过这篇教程,你已经掌握了“基于YOLOv8的HRSC2016微小船只检测系统”从数据集处理、模型训练到Tkinter界面开发的全流程。这个课题既贴合“海事智能化”的产业战略,又涵盖了“目标检测、深度学习、界面开发”等多个毕设评分点,非常适合作为计算机或海事工程专业的毕业设计。在实践中,你可能会遇到“海面背景复杂导致船只漏检”“微小船只识别精度不足”“UI与模型推理同步卡顿”等挑战——别担心,这些都是技术成长的必经之路。

FJN110的博客 108

第19课 - 编译过程简介

第19课 - 编译过程简介

基建工时福贵 114

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

编译、链接过程简介

目录 1、初探GDB 2、使用GDB 进行断点调试 3、函数调用栈的查看 4、调试中的小技巧 5、小结 1、初探GDB 什么是GDB? - GNU项目中的调试器(gnu debuger) - 能够跟踪程序的执行,也能够恢复程序崩溃前的状态 为什么需要GDB? - 软件不是一次性开发完成的(是软件就有bug,是程序就有问题) -...

洋葱汪的博客 1764

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

gcc编译过程简介

fill:#333;color:#333;color:#333;fill:none;

czw 981

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

GCC编译过程简介

GCC(GNU Compiler Collection)是一个非常流行的编译器集合,广泛用于C、C++、Fortran、Ada、Go等语言的编译。GCC的编译过程包括多个阶段,每个阶段都有特定的功能,确保源代码最终转换成可执行的二进制文件。

m0_56508437的博客 1046

C语言编译过程简介

C语言编译原理简介刚开始接触编程的时候,只知道照书敲敲代码,一直都不知道为什么在windows平台下代码经过鼠标那样点击几下,程序的结果就会在那个黑色的屏幕上。现在找了个机会将C语言的编译原理做一下小小的总结,这样也能为以后我们进军linux编程做一些准备工作,现在这里和大家一起分享分享。O(∩_∩)O~讲到编译原理,我觉得首先我们得明白一些基本概念。1.                   编辑器:我们编写代码的一些窗口,如:记事本、word、notepad 等。2.                  

chengocean的专栏 7196

编译器编译过程简介

完整的编译器编译过程分为四步:预处理、编译、汇编、链接。下面简单介绍一下各个过程。 1、预处理(The Preprocessor) 预处理器产生编译器的输入。通过预处理,将存储在不同文件中的程序模块集成为一个完整的源程序代码,并将宏展开为原始语句加入到头文件中。简单概括就是:文件合并、宏定义替换、删除注释等。 2、编译(The Compiler) 编译器将独立于目标的高级语言源代码转换为特定于目标的汇编代码。由于汇编程序代码是特定于目标硬件的,所以编译器也特定于目标硬...

zjq1042970687的博客 3677
上一篇: Android 4.0 消息处理的流程之我见
下一篇: 什么是真正的实时操作系统
野-百-合
博客等级 码龄17年 308粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值