在构建时解决符号大肠菌病

问题描述

我在C程序中有一些符号冲突,以前的搜索导致this objcopy,问题是我的工作流程是golang cgo,所以我不处理{{1 }}和.o(我知道我的lib的目标可能是被其他人使用,所以我无法拥有自定义的golang工作流程。)


我需要的更多信息: 我在go lib中有一堆函数来做各种事情,此代码自动生成的,无法预测,有时在构建管道中它们有时会与其他函数发生冲突(具有相同的名称),所以我希望所有C语言我的go lib函数中的函数重命名,这可以在生成时使用standart cgo进程(基本上首先使用gcc生成每个文件,然后将它们全部链接起来)发生,也可以在代码自动生成后发生(我想我可以运行预处理程序重命名了所有功能,并且在源代码中有调用,但是我找不到一个。)


我已经尝试过的东西: .a

Thisthis看起来非常有前途,但是无论如何,我都无法使它起作用:

#pragma extern_prefix

Shell输出

// test.c
#include <stdio.h>

#pragma extern_prefix "TestPrefix"

int test() {
    printf("Hello,World!\n");
    return 0;
}

#pragma extern_prefix ""

int main() {
   return test();
}

不同于我期望的$ gcc test.c -o test && ./test && nm -an test | grep test Hello,World! 0000000000000000 a test.c 0000000000001149 T test 符号没有像我期望的那样前缀(据我了解,该符号应为test)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)