我想不出下一步该怎么做。
我有以下代码:
test.cpp
#include <stdio.h>
void
function(void) {printf("Hellow ");}
int main(void) {
printf("World\n");
return 0;
}我想把它转化成下一个:
#include <stdio.h>
void
function(void) {printf("Hellow ");}
int main(void) {
function();
printf("World\n");
return 0;
}用gcc插件。
在我的插件中不起作用的代码是:
...
tree function_fn;
tree function_fn_type;
function_fn_type=build_function_type_list(void_type_node, void_type_node, NULL_TREE);
function_fn = build_fn_decl ("function", function_fn_type);
gimple call = gimple_build_call (funcion_fn, 0);
gsi_insert_before (&gsi, call, GSI_NEW_STMT);
...然后,当我用插件编译test.cpp时,我会收到下一个错误消息:
/tmp/cc2VRszt.o:函数main': test.cpp:(.text+0x60): Undefined reference to函数‘
有人能帮我吗?
发布于 2014-09-25 01:18:07
您正在构建函数声明,并根据该声明插入对函数的调用,但除非您在链接到的另一个翻译单元中定义了该函数,否则它将无法解决。如果您想要一个插件在同一个翻译单元中插入一个定义,就像在您的示例中一样,为前端开发人员提供的指南将是一个很好的开始:
http://www.tldp.org/HOWTO/GCC-Frontend-HOWTO-7.html
https://stackoverflow.com/questions/25775292
复制相似问题