基于编译型语言鲲鹏应用开发小技巧

news/2024/11/13 5:33:09/

编译型语言应用执行过程

大部分应用可以通过重新编译即可移植到鲲鹏平台

预处理命令: gcc -E hello.c -o hello.i,预处理完成后使用命令: cat hello.i可以看到预处理后的代码

编译命令: gcc -s hello.i -o hello.s

汇编命令: gcc -c hello.c -o hello.o

链接处理可分为:

  1. 静态链接:函数的代码将从其所在地静态链接库中被拷贝到最终的可执行程序中。这样该程序在被执行时这些代码将被装入到该进程的虚拟地址空间中。静态链接库实际上是一个目标文件的集合,其中的每个文件含有库中的一个或者—组相关函数的代码。
  2. 动态链接:函数的代码被放到称作是动态链接库或共享对象的某个目标文件中。链指链接阶段仅仅只加入一些描述信息,而程序执行时再从系统中把相应动态库加载到内存中去。链接程序此时所作的只是在最终的可执行程序中记录下共享对象的名字以及其它少量的登记信息。在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚地址空间。动态链接程序将根据可执行程序中记录的信息找到相应的函数代码。

编译移植——参数处理

不同架构下差异化GCC编译选项查询(gcc7.3为例)可在如下链接查看:链接:https://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc/Submodel-

Options.html#Submodel-Options

注意:-mabi=lp64在gcc4.8.5不支持,推荐gcc7.3及以上版本

编译编译——宏处理

汇编指令替换——C/C++中内联汇编语法

内联的汇编语句以asm开头,有时也会使用_asm_,后面可加参数”_volatile__"表示编译器不要优化代码,后面的指令保留原样

汇编指令替换——替换方法

方法一:如果有相同功能的ARM汇编指令,则直接替换

方法二:如果没有相同功能的ARM汇编指令,则重新开发代码来替换


http://www.ppmy.cn/news/1465278.html

相关文章

AWS中国峰会2024 半日游

亚马逊云科技中国峰会于2024年5月29-30日在上海举办 今年就去了半天,去年也是去过的,不过今年的活动个人感觉比去年略微凌乱了一点。 今年的峰会方向和去年一致,均是AI方向的各项内容(基础架构、安全、服务、游戏、驾驶、各行各…

案例研究|MeterSphere助力万物云构建高效自动化测试平台

万物云空间科技服务股份有限公司(以下简称为“万物云”),前身为万科物业发展股份有限公司,是国内领先的物管龙头上市公司。作为一家科技引领的全域空间服务商,万物云致力于打造产业级共享服务平台,基于空间…

Fully Convolutional Networks for Semantic Segmentation--论文笔记

论文笔记 资料 1.代码地址 2.论文地址 https://arxiv.org/abs/1411.4038 3.数据集地址 论文摘要的翻译 卷积网络是强大的视觉模型,可以产生特征层次结构。我们表明,卷积网络本身,经过端到端,像素对像素的训练,在…

自动驾驶学习3-摄像头(1)

1、简介 车载摄像头指安装在汽车上,用于监控汽车内外环境情况以辅助汽车驾驶员行驶的摄像设备。智能驾驶的眼睛。 分类: 车载摄像头按安装位置的不同可分为前视、后视、环视、内视车载摄像头。 前视摄像头需要进行测距功能,所以一般分辨率要…

ChAMP加载肺癌数据和分析甲基化数据流程

ChAMP加载肺癌数据和分析甲基化数据流程 1. 加载数据分析 #!/bin/evn R rm(list = ls()) library(rstudioapi) current_script_path <- getActiveDocumentContext()$path# 将路径转换为当前目录 current_directory <- dirname(current_script_path)# 设置当前工作目录 …

Vue速成学习笔记

这两天速成了一下Vue&#xff0c;在这里记录一下相关的笔记&#xff0c;之后有时间详细学Vue的时候再来回顾一下&#xff01; 一、Vue理解 1、Vue的核心特征&#xff1a;双向绑定。 在网页中&#xff0c;存在视图和数据。在Vue之前&#xff0c;需要使用JavaScript编写复杂的逻…

Imgs,GT,Edge,Gradient_all,Gradient_Foreground

保存一下&#xff1a; 做个记录&#xff1a; import cv2 import os import numpy as np# 对整张图片做canny检测 得到纹理图 def canny_all(input_path, output_path):# 遍历文件夹中的所有文件for filename in os.listdir(input_path):# 构造完整的文件路径image_path os.p…

内网渗透-隧道搭建ssp隧道代理工具

内网渗透-隧道搭建&ssp隧道代理工具 目录 内网渗透-隧道搭建&ssp隧道代理工具spp隧道代理工具spp工作原理图cs上线主机spp代理通信服务端配置客户端配置CS配置设置CS生成木马的监听器配置CS监听上线的监听器生成木马 spp隧道搭建服务端配置客户端配置CS配置 内网穿透&a…