Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用cmake生成静态库时如何具有中间编译语句

使用cmake生成静态库时如何具有中间编译语句
EN

Stack Overflow用户
提问于 2019-08-12 07:22:36
回答 1查看 98关注 0票数 2

我正在成功地编译,使用clang,从源代码到IR比特码,并生成一个静态库。我需要解决的问题是,IR引用了它们的库内部全局名称中的外部全局变量。我需要将这些内部全局名称修改为外部全局名称。例如,在libc.a中,以LLVM格式:

代码语言:javascript
运行
AI代码解释
复制
@atoi = alias i32 (i8*), i32 (i8*)* @__GI_atoi

define hidden i32 @__GI_atoi(i8* nonnull) #0 {
  ...
  %4 call i64 @__GI_strtol(i8* %3, i8** null, i32 10) #2
  ...
}

declare hidden i64 @__GI_strtol(i8*, i8**, i32) #1

__GI_strtol位于atoi模块的外部,但在libc.a存档的内部。strtol模块有一个@strtol = alias ... @__GI_strtol定义和一个名为GI_strtolhidden函数。

我需要做的是在编译源文件时(在上面的示例中是atoi.c),我需要执行以下操作:

  1. 将源文件编译为.ll (LLVM)格式。
  2. 将所有做declare hidden而不是的alias语句转换为它们的外部全局值(基本上是hidden --> dso_local__GI_**)。
  3. 将生成的.ll文件转换为其its (.bc)等效文件。
  4. .bc文件插入到libc.a存档中。

这个是可能的吗?

我在add_custom_target文件中有许多CMake和add_custom_command,但是在从.c编译到.bc时没有。

如果这是一个make构建,我只需添加从.c编译到.ll、从.ll编译到.bc的定义,并在最后一个阶段执行上述更改。

我希望能够使用CMake以最有效的方式执行上述步骤。我希望能够做到这一点,而不必,字面上说,1000 s的add_custom_command/targets。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-23 04:02:06

我找不到一种方法能够将转换作为编译的一部分。因此,我将add_custom_command与存档本身上的POST_LINK一起使用。然后,我处理归档中的每个条目,执行所需的转换,然后更新归档。

它是一种get a bigger hammer解决方案,但它可以工作,并且不添加100多个自定义目标。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57463999

复制
相关文章
将原生事件绑定到组件
官方的例子是晦涩难懂的,除非已经完全理解了,在这里给大家只用通俗易懂的3个例子解释这个问题
砖业洋__
2023/05/06
7900
将原生事件绑定到组件
将文件拖到此处,点击上传
<template> <div v-loading="loading"> <el-upload ref="uploadExcel" class="upload-demo" drag :http-request="uploadFile" action="action" :limit="limitNum" :show-file-list="true" accept=".xlsx,.xls" :
达达前端
2020/11/12
1.3K0
React组件方法中为什么要绑定this
上例仅仅是一个组件类的定义,当在其他组件中调用或是使用ReactDOM.render( )方法将其渲染到界面上时会生成一个组件的实例,因为组件是可以复用的,面向对象的编程方式非常适合它的定位。根据this指向的基本规则就可以知道,这里的this最终会指向组件的实例。
大史不说话
2019/03/01
9140
vue3 将组件的所有属性、监听绑定到子组件 跨层级通信
有时候对已有组件进行二次封装需要传递属性、监听,一个一个声明传值麻烦可以通过以下方法实现
路过君
2022/12/02
2.5K0
Python 绑定方法与非绑定方法
  import uuid  --------------  uuid是128位的全局唯一标识符, 通常用32位的一个字符串的形式来表现
py3study
2020/01/19
9050
VUE组件封装_vue组件内部双向绑定
官方:一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件。
全栈程序员站长
2022/11/09
8690
VUE组件封装_vue组件内部双向绑定
详解类方法之绑定方法与非绑定方法
在 Python 中除了特殊方法以外,类中的其他普通方法也是经常用到的,所以对于普通的方法也要进行研究,下面我们来看一个例子:
编程文青李狗蛋
2019/11/07
3760
Angular 2 中的绑定的方法在无限循环吗?
我在自己的Ionic 2项目中,使用卡片列出数据: <ion-card *ngFor="let item of inspects"> 卡片中有一个导航按钮,根据每项的数据生成连接打开百度地图,我是这样绑定的: 页面: <a [href]="nav(item)" target="_blank" ion-button icon-left clear small> <ion-icon name="pin"></ion-icon> <div>导航</div> </a> 代码:
孙亖
2018/06/07
4.1K0
7.vue组件(二)--双向绑定,父子组件访问
子组件通过属性props: ["cmessage"], 来接收父组件的message属性. 并且父组件修改message的值, 子组件跟随改变
用户7798898
2021/03/04
1.1K0
7.vue组件(二)--双向绑定,父子组件访问
[ASP.NET Core 3框架揭秘] 配置[4]:将配置绑定为对象
虽然应用程序可以直接利用通过IConfigurationBuilder对象创建的IConfiguration对象来提取配置数据,但是我们更倾向于将其转换成一个POCO对象,以面向对象的方式来使用配置,我们将这个转换过程称为配置绑定。配置绑定可以通过如下几个针对IConfiguration的扩展方法来实现,这些扩展方法都定义在NuGet包“Microsoft.Extensions.Configuration.Binder”中。
蒋金楠
2019/12/16
1K0
[ASP.NET Core 3框架揭秘] 配置[4]:将配置绑定为对象
【JetPack】ViewBinding 视图绑定组件 ( 启用模块 | 视图绑定定制 | 绑定类名称生成规则 | 绑定类字段生成规则 | 绑定类获取根视图 | 绑定类获取布局组件 )
Activity 获取布局组件方式 : 在之前的 Activity 代码中 , 使用 findViewById ( ) 方法 , 或者 Butter Knife 的 @BindView 注解方式获取 Layout 布局中的组件对象 ;
韩曙亮
2023/03/27
1.3K0
【JetPack】ViewBinding 视图绑定组件 ( 启用模块 | 视图绑定定制 | 绑定类名称生成规则 | 绑定类字段生成规则 | 绑定类获取根视图 | 绑定类获取布局组件 )
Vue - 自定义组件双向绑定
无论在任何的语言或框架中,我们都提倡代码的复用性。对于Vue来说也是如此,相同的代码逻辑会被封装成组件,除了复用之外,更重要的是统一管理提高开发效率。我真就接手过一个项目,多个页面都会用到的列表,没有去封装列表组件,只要有一点改动,每个页面都得加上。很肯定的说,没有用组件化开发的Vue项目是没有灵魂的。所以如何封装一个优雅且复用性高的组件成为我们必需的技能。
WahFung
2020/08/24
1.1K0
Vue - 自定义组件双向绑定
PHP-方法绑定
1.9 方法绑定 这是了解的内容,PHP7.0支持 作用:将方法绑定到对象上,并调用 语法: 闭包->call(对象):将闭包绑定到对象上,并调用 在PHP中匿名函数称为闭包 例题 <?php $la
cwl_java
2022/11/30
5310
【Jetpack】DataBinding 架构组件 ⑥ ( RecyclerView 数据绑定 )
在 RecyclerView 中 , 如果要使用 DataBinding 架构组件进行数据绑定 , 首先要 启用 DataBinding , 并 导入 RecyclerView 依赖 , 在 Module 模块下的 build.gradle 构建脚本 中 , 配置如下内容 :
韩曙亮
2023/04/24
8140
【Jetpack】DataBinding 架构组件 ⑥ ( RecyclerView 数据绑定 )
21 vue 组件中 Class 的绑定
对于样式类的绑定,使用v-bind就能满足需求,但vue为class的绑定作了特别的优化。
LIYI
2020/02/13
1.7K0
21 vue 组件中 Class 的绑定
虚拟主机怎么绑定域名?绑定失败可以正常使用吗?
众所周知,只拥有一个普通的域名,是不能够正常运营网站的,人们还需要将域名绑定在主机上,这时候许多人使用的都是虚拟主机,它可以方便人们进行操作,不过还是应当提前搞清楚虚拟主机怎么绑定域名这个问题。
用户8739990
2021/08/06
9K0
虚拟主机怎么绑定域名?绑定失败可以正常使用吗?
【工作篇】再次熟悉 SpringMVC 参数绑定
主要现在项目中使用的参数绑定五花八门的,搞得很头大,例如有些用字符串接收日期,用字符串接受数组等等,完全没有利用好 SpringMVC 的优势,这里自己也总结一下,免得到时又要百度谷歌查找。
玖柒的小窝
2021/12/17
6840
SwiftU:将状态绑定到UI控件
SwiftUI的@State属性包装器允许我们自由修改视图结构体,这意味着当程序更改时,我们可以更新视图属性以匹配。
韦弦zhy
2020/03/20
3.1K0
Vue动态组件绑定和v-once
如何实现一个组件的切换显示呢? 动态组件 前台控制两个组件使用v-if条件渲染,给一个按钮一个切换方法 <child-one v-if="type=='child-one'" v-once></c
十月梦想
2018/10/09
9740
点击加载更多

相似问题

将变量绑定到此

10

在反应性组件之间共享绑定到此的方法的有效方法

10

将函数绑定到此的更简洁的方法?

30

表示请将方法附加到此组件

10

bind():将组件方法绑定到组件。你会自动做出反应吗?

66
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档