~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/translations/zh_CN/kbuild/gcc-plugins.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/translations/zh_CN/kbuild/gcc-plugins.rst (Version linux-6.12-rc7) and /Documentation/translations/zh_CN/kbuild/gcc-plugins.rst (Version linux-4.12.14)


  1 .. SPDX-License-Identifier: GPL-2.0               
  2                                                   
  3 .. include:: ../disclaimer-zh_CN.rst              
  4                                                   
  5 :Original: Documentation/kbuild/gcc-plugins.rs    
  6 :Translator: 慕冬亮 Dongliang Mu <dzm91@hust    
  7                                                   
  8 ================                                  
  9 GCC 插件基础设施                            
 10 ================                                  
 11                                                   
 12                                                   
 13 介绍                                            
 14 ====                                              
 15                                                   
 16 GCC 插件是为编译器提供额外功能的    
 17 我们可以在编译过程中通过回调 [2]    
 18 (译者注:Pass 是编译器所采用的    
 19 来分析、修改和添加更多的代码。     
 20                                                   
 21 内核的 GCC 插件基础设施支持构建    
 22 C++ 编译器编译。                            
 23                                                   
 24 目前 GCC 插件基础设施只支持一些    
 25 GCC 插件的架构。                            
 26                                                   
 27 这个基础设施是从 grsecurity [6]_  和     
 28                                                   
 29 --                                                
 30                                                   
 31 .. [1] https://gcc.gnu.org/onlinedocs/gccint/P    
 32 .. [2] https://gcc.gnu.org/onlinedocs/gccint/P    
 33 .. [3] https://gcc.gnu.org/onlinedocs/gccint/G    
 34 .. [4] https://gcc.gnu.org/onlinedocs/gccint/I    
 35 .. [5] https://gcc.gnu.org/onlinedocs/gccint/R    
 36 .. [6] https://grsecurity.net/                    
 37 .. [7] https://pax.grsecurity.net/                
 38                                                   
 39                                                   
 40 目的                                            
 41 ====                                              
 42                                                   
 43 GCC 插件的设计目的是提供一个用于    
 44 一旦它们的实用性得到验证,这些    
 45 支持的 GCC 版本都支持这些功能后    
 46                                                   
 47 具体来说,新插件应该只实现上游    
 48                                                   
 49 当 Clang 中存在 GCC 中不存在的某项    
 50 是作为内核专用的 GCC 插件),以    
 51                                                   
 52 类似的,如果 GCC 插件提供的功能    
 53 努力将该功能上传到 GCC(和 Clang)    
 54                                                   
 55 在上游 GCC 提供了某项功能后,该    
 56 一旦所有内核支持的 GCC 版本都提    
 57                                                   
 58                                                   
 59 文件                                            
 60 ====                                              
 61                                                   
 62 **$(src)/scripts/gcc-plugins**                    
 63                                                   
 64         这是 GCC 插件的目录。             
 65                                                   
 66 **$(src)/scripts/gcc-plugins/gcc-common.h**       
 67                                                   
 68         这是 GCC 插件的兼容性头文件    
 69         应始终包含它,而不是单独    
 70                                                   
 71 **$(src)/scripts/gcc-plugins/gcc-generate-gimp    
 72 $(src)/scripts/gcc-plugins/gcc-generate-ipa-pa    
 73 $(src)/scripts/gcc-plugins/gcc-generate-simple    
 74 $(src)/scripts/gcc-plugins/gcc-generate-rtl-pa    
 75                                                   
 76         这些头文件可以自动生成 GIMP    
 77         与手动创建结构相比,它们    
 78                                                   
 79                                                   
 80 用法                                            
 81 ====                                              
 82                                                   
 83 你必须为你的 GCC 版本安装 GCC 插件    
 84                                                   
 85         apt-get install gcc-10-plugin-dev         
 86                                                   
 87 或者在 Fedora 上::                            
 88                                                   
 89         dnf install gcc-plugin-devel libmpc-de    
 90                                                   
 91 或者在 Fedora 上使用包含插件的交    
 92                                                   
 93         dnf install libmpc-devel                  
 94                                                   
 95 在内核配置中启用 GCC 插件基础设    
 96                                                   
 97         CONFIG_GCC_PLUGINS=y                      
 98         CONFIG_GCC_PLUGIN_LATENT_ENTROPY=y        
 99         ...                                       
100                                                   
101 运行 gcc(本地或交叉编译器),确    
102                                                   
103         gcc -print-file-name=plugin               
104         CROSS_COMPILE=arm-linux-gnu- ${CROSS_C    
105                                                   
106 "plugin" 这个词意味着它们没有被检    
107                                                   
108         plugin                                    
109                                                   
110 完整的路径则表示插件已经被检测    
111                                                   
112        /usr/lib/gcc/x86_64-redhat-linux/12/plu    
113                                                   
114 编译包括插件在内的最小工具集::      
115                                                   
116         make scripts                              
117                                                   
118 或者直接在内核中运行 make,使用    
119                                                   
120                                                   
121 4. 如何添加新的 GCC 插件                  
122 ========================                          
123                                                   
124 GCC 插件位于 scripts/gcc-plugins/。你需    
125 子目录创建并不支持,你必须添加    
126 和相关的 Kconfig 文件中。                 
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php