我正在尝试查看是否可以在 ARM 交叉编译器(arm-none-eabi-gcc)中使用 gcc 插件。但是,我遇到了编译器错误,并且质疑我正在尝试做的事情是否可行。
我要设置的插件是:https ://github.com/vanhauser-thc/AFLplusplus/tree/master/gcc_plugin
我正在使用该-m32
标志在 x86-64 linux 上编译插件,因为交叉编译器是一个 32 位应用程序。但是,当我尝试在交叉编译器中使用插件时-fplugin
,我得到一个未定义的符号编译器错误:
cc1plus: error: cannot load plugin ../afl-gcc-pass.so
../afl-gcc-pass.so: undefined symbol: _Z13build_int_cstP9tree_nodel
我查看了插件的符号 usingnm
并发现大多数符号是未定义的,包括exit
和random
. 我对其中的大部分内容都很陌生,不确定这到底意味着什么。一些在线搜索表明它可能与不正确的库路径有关,但设置LIBRARY_PATH
和LD_LIBRARY_PATH
重建似乎没有帮助。
我尝试过的 gcc 版本设置:
1:x86:5.4.0,arm:ubuntu 16.04 上的 5.4.1
2:x86:5.2.0,arm:CentOS 6.8 上的 5.2.1
是否可以在与编译时不同的 gcc 中使用 gcc 插件,还是我在浪费时间?