linux怎么删除代码库,是否有从代码库中删除第三方C和C库的好技巧或工具? (OS X或Linux)...

我正在减少和隔离我对某些库的使用.我编写的许多现有程序直接使用这些库.我想要编译器(在这种情况下是GCC和/或Clang)或一些工具来帮助我识别我的代码库中的这些用法.简而言之,我想在代码库中毒害这些库的使用,除了它们将由一个库使用,并且我的代码库中的其他模块可以看到一个库.

问题:

1)你知道可以帮助我的工具吗?

2)或者你能推荐一些策略来简化这个过程吗?

条件和细节:

>删除他们的包含不是一种选择.

>由于我的代码库大小和我要隔离的符号数,搜索无效.

>鉴于代码库的复杂性和要删除的符号数量,使用重构工具将太繁琐.

>由于第三方库中的声明数量,不能单独弃用符号.

>第三方库接口主要用C语言编写.

>翻译将是C和Objective-C.

>对于我的构建配置方式,预处理器技巧并不优雅,并且会改变太多文件.

>每次最后一次使用都不需要消除.理想情况下,它们会是,但大多数用途都令人满意.这不是一个要求,因为有太多的更新.

>在这种情况下,从链接阶段删除它们不是一个好的选择(在Update#3中有详细说明).

>理想情况下,此工具或策略可在OS X上使用,但我也可以构建针对Linux的大量程序.

一些策略已经浮现在脑海中:

到目前为止,我为此案例提出的最好的方法是重新声明库使用的类型,并使用不推荐使用的属性来装饰它们:

typedef IHREType IHREType __attribute__((__deprecated__));

但这并不能涵盖所有情况,经过几次迭代后,信噪比会非常高.

另一种方法是在我使用的根命名空间中重新声明这些类型:

namespace MON {

typedef t_poisoned IHREType;

}

但那会变得有点乱.

所以我想我将从弃用的属性策略开始,但在我这样做之前,我认为其他人已经解决了这个问题并且会知道更好的解决方案.

更新#1

> K-ballo提到了一个很好的策略(通过包含中毒).不幸的是,在我的情况下,我想要隔离的API也无法在系统框架中找到,这些系统框架通过我不希望隔离的API包含在内.

更新#2

由于响应数量较少,因此添加了Linux.

更新#3

> > Justin: Removing them from the link stage is not a good option in this case.

> thiton: Why not?

详细说明这一点:我喜欢此时图书馆和项目的布局方式.有静态和动态库的组合.改变该结构并同步依赖关系是耗时的(尽管隔离的情况可能是一些库的时间利用很好……).链接器还解析了由于依赖性而要删除的大量符号(例如,在系统库中).

我接近这个计划

代码库中有数百个Xcode项目(为其他构建器/ IDE添加到该项目).

我将在这里关注这些更新几天,并在那里停留几天; 100%的覆盖率不是这个时间范围的现实目标,也不是目前的要求.由于任务的大小和代码库的当前状态,我想重点关注此时按编号删除出现的情况.按编号删除也是优选的,因为它最终将导致更少的时间构建(需要一段时间来构建这一切).一旦减少,我将转向彻底消除 – 至少,这是我目前的计划.在这种情况下,我有时间执行更新,但它还不是很紧急.如果您的建议偏离此模型,我确实具有灵活性.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值