在 Debian 上“装 gcc 插件”通常有两种理解,我分开说明,你可以对号入座。
.so 插件)sudo apt update
sudo apt install gcc g++ gcc-<版本>-plugin-dev
例如 GCC 12:
sudo apt install gcc-12 gcc-12-plugin-dev
确认插件目录:
gcc -print-file-name=plugin
通常是:
/usr/lib/gcc/x86_64-linux-gnu/12/plugin
假设你有一个插件 myplugin.so:
gcc -fplugin=./myplugin.so -fplugin-arg-myplugin-arg1=val test.c
如果是系统插件:
gcc -fplugin=myplugin test.c
sudo apt install gcc g++ make
sudo apt install gcc-$(gcc -dumpversion)-plugin-dev
hello.c:
#include "gcc-plugin.h"
#include "plugin-version.h"
int plugin_is_GPL_compatible;
static void gate_callback(void *gcc_data, void *user_data) {
printf("Hello from GCC plugin!\n");
}
int plugin_init(struct plugin_name_args *plugin_info,
struct plugin_gcc_version *version) {
register_callback(plugin_info->base_name,
PLUGIN_ALL_PASSES_START,
gate_callback,
NULL);
return 0;
}
gcc -I/usr/lib/gcc/x86_64-linux-gnu/$(gcc -dumpversion)/plugin/include \
-fPIC -shared -o hello.so hello.c
gcc -fplugin=./hello.so test.c
plugin.h说明没装 gcc-*-plugin-dev
sudo apt install gcc-12-plugin-dev
插件必须与 同一 GCC 版本 编译和使用。
可启用 backports:
sudo apt install -t bookworm-backports gcc-13 gcc-13-plugin-dev
比如:
gcc-multilib(32 位支持)gdb、valgrindclang 插件可以告诉我 具体插件名字或用途,我可以直接给你命令。
如果你愿意,可以告诉我:
cat /etc/os-release)gcc --version)我可以给你更精确的方案。