それで、しばらくウェブを検索した後、私は議論のための良いフォーラムのように見えるので、ここで試してみることにしました. シンプルな gcc プラグインを作成しようとしています。プログラムコードはこのメールの最後に添付されていますが、平易な英語でプラグインを登録し、プラグマが登録されたときに pragma_init 関数が呼び出されるようにします。ここで、c_register_pragma を使用していくつかのプラグマをインターセプトします。
http://gcc.gnu.org/onlinedocs/gccint/Plugins-building.html#Plugins-buildingの例を使用してコンパイルします。コンパイルとリンクは正常に機能します。ただし、プラグインをロードすると、次のようになります。
gcc -c -fplugin=plugin.so test.c -o test.o
cc1: error: cannot load plugin plugin.so
plugin.so: undefined symbol: warning
私は何を間違っていますか?さらに、いくつかのヘッダー ファイル (後で必要になります) をインクルードすると、多くのエラーが発生します。たとえば、「tree.h」を含めると (50 の他のエラーの中で):
/machmode.h:262:1: error: unknown type name 'class'
class bit_field_mode_iterator
^
/machmode.h:263:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
{
^
/plugin/include/tree.h:27:0,
from conftest.c:63:
/vec.h:220:8: error: field 'register_overhead' declared as a function
誰が私が間違っているのかについての手がかりを持っていますか?
ありがとうございました