在 Debian 下“gcc 插件”通常指两类东西,下面分别说明,你看看你指的是哪一种。
GCC 支持用 C/C++ 写编译器插件,在编译时介入(比如做代码分析、插桩)。
sudo apt update
sudo apt install gcc g++ gcc-plugin-dev
gcc-plugin-dev提供gcc-plugin.h等头文件
hello.c:
#include "gcc-plugin.h"
#include "plugin-version.h"
int plugin_is_GPL_compatible;
static void print_hello(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,
print_hello, 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
输出:
Hello from GCC plugin!
有些人说“Debian gcc 插件”其实是指:
sudo apt install gcc-11 gcc-12
sudo update-alternatives --config gcc
gcc-multilib:支持 32 位编译gdb:调试make / cmake:构建gcc 路径如果你能补充一下:
我可以给你更精确的用法。