当前位置:首页 > 英文周记 > 正文内容

implementations「Implementations Manager」

更新时间:2026-07-18 21:05:36 周记网3年前 (2023-02-07)英文周记115

解讲解一下句子结构,并翻译一下。谢谢!

此处,通过探索式执行贯彻对协议(或:计划书)的履行,但建议对运行系统(或:生产系统)慎重考虑,了解在协议进入草案阶段前,将本协议付诸履行是否合适。

but引导转折关系的俩分句。

前一分句主干为Implementation...is encouraged;Implementation of the protocol described作主语(Implementation为中心语),is encouraged为谓语部分,in exploratory implementations为状语,后置,修饰谓语

implementations「Implementations Manager」

后一分句为(嵌合状语从句的)宾语从句(二重从句),由whether引导;主句production systems are advised to...consider,主production systems、谓语部分are advised to...consider;whether后接宾语从句,it is appropriate to...为主系表结构,it即形式主语,真正主语为 to deploy implementations of this protocol (before it advances to a status of Draft,时间状语从句、后置,修饰限定whether后、before前整个部分);还原为正常语序,即to deploy implementations of this protocol (before) is appropriate,因显冗长,故后置、且以it代居其位,以示句式平衡。

供参

iOS 方法交换 method_exchangeImplementations

方法交换

使用方法交换需要注意些什么呢

1、在交换系统方法后要注意结束前调用本方法,也就是执行系统方法

2、再交换前,判断类中是否已经实现了系统方法,没有的话需要增加方法,避免交换父类方法

3、加dispatch_once,只执行一次

方法交换

当我们用如下方法写方法交换的时候,会出现什么问题呢

设想一种情况,想交换UIButton的sendAction方法,用上述方法,实际上交换的是父类的sendAction和UIButton的custom方法,那么当点击其他继承UIControl的类时,比如UISegmentedControl,会出现崩溃,因为调用UISegmentedControl的sendAction调用的是custom方法,但是UISegmentedControl是没有这个custom方法的,就会抛出异常

那么就要增加判断

或者

第二种和第三种原理是一样的,只是写法略有不同

交叉编译的流程是什么?

采用交叉编译的主要原因在于,多数嵌入式目标系统不能提供足够的资源供编译过程使用,因而只好将编译工程转移到高性能的主机中进行。

linux下的交叉编译环境重要包括以下几个部分:

1.对目标系统的编译器gcc

2.对目标系统的二进制工具binutils

3.目标系统的标准c库glibc

4.目标系统的linux内核头文件

交叉编译环境的建立步骤

一、下载源代码 下载包括binutils、gcc、glibc及linux内核的源代码(需要注意的是,glibc和内核源代码的版本必须与目标机上实际使用的版本保持一致),并设定shell变量PREFIX指定可执行程序的安装路径。

二、编译binutils 首先运行configure文件,并使用--prefix=$PREFIX参数指定安装路径,使用--target=arm-linux参数指定目标机类型,然后执行make install。

三、配置linux内核头文件

首先执行make mrproper进行清理工作,然后执行make config ARCH=arm(或make menuconfig/xconfig ARCH=arm)进行配置(注意,一定要在命令行中使用ARCH=arm指定cpu架构,因为缺省架构为主机的cpu架构),这一步需要根据目标机的实际情况进行详细的配置,笔者进行的实验中目标机为HP的ipaq-hp3630 PDA,因而设置system type为SA11X0,SA11X0 Implementations中选择Compaq iPAQ H3600/H3700。

配置完成之后,需要将内核头文件拷贝到安装目录: cp -dR include/a**-arm $PREFIX/arm-linux/include/a** cp -dR include/linux $PREFIX/arm-linux/include/linux

四、第一次编译gcc

首先运行configure文件,使用--prefix=$PREFIX参数指定安装路径,使用--target=arm-linux参数指定目标机类型,并使用--disable-threads、--disable-shared、--enable-languages=c参数,然后执行make install。这一步将生成一个最简的gcc。由于编译整个gcc是需要目标机的glibc库的,它现在还不存在,因此需要首先生成一个最简的gcc,它只需要具备编译目标机glibc库的能力即可。

五、交叉编译glibc

这一步骤生成的代码是针对目标机cpu的,因此它属于一个交叉编译过程。该过程要用到linux内核头文件,默认路径为$PREFIX/arm-linux/sys-linux,因而需要在$PREFIX/arm-linux中建立一个名为sys-linux的软连接,使其内核头文件所在的include目录;或者,也可以在接下来要执行的configure命令中使用--with-headers参数指定linux内核头文件的实际路径。

configure的运行参数设置如下(因为是交叉编译,所以要将编译器变量CC设为arm-linux-gcc): CC=arm-linux-gcc ./configure --prefix=$PREFIX/arm-linux --host=arm-linux --enable-add-ons 最后,按以上配置执行configure和make install,glibc的交叉编译过程就算完成了,这里需要指出的是,glibc的安装路径设置为$PREFIXARCH=arm/arm-linux,如果此处设置不当,第二次编译gcc时可能找不到glibc的头文件和库。

六、第二次编译gcc

运行configure,参数设置为--prefix=$PREFIX --target=arm-linux --enable-languages=c,c++。

运行make install。

到此为止整个交叉编译环境就完全生成了。

几点注意事项

第一点、在第一次编译gcc的时候可能会出现找不到stdio.h的错误,解决办法是修改gcc/config/arm/t-linux文件,在TARGET_LIBGCC2_CFLAGS变量的设定中增加-Dinhibit_libc和-D__gthr_posix_h。

标签: implementations

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。