gpt4 book ai didi

ios - Clang/LD 函数分解?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:00 24 4
gpt4 key购买 nike

我有两个工作编译器,clangMac 上,它可以针对 iPhone,而 clang 在一个 iPhone,它也以 iPhone 为目标。通常两者都很好用,生成二进制文件和库。在 Mac 上生成的库可以在 iPhone 上链接。但现在我遇到了一个奇怪的问题:在 iPhone 上尝试链接到在 Mac 上创建的库时,库没有链接

Undefined symbols:
"__Z7JS_Initji", referenced from:
_main in test-CgDtHX.o

这是对 JS_Init 的调用,它被定义为一个以不同方式扩展的宏。

iphone-clang 将其扩展为:

extern JSRuntime * JS_Init(uint32_t maxbytes, int);

mac-clang 将扩展为:

extern JSRuntime * JS_Init(uint32_t maxbytes, JSUseHelperThreads useHelperThreads);

我不确定宏扩展是否是链接失败的原因

好的,现在我的问题是,jiZ7__Z7JS_Initji 中到底是什么意思?我在哪里可以找到显示参数类型 和那些mangling ids 之间对应关系的表格?这一定是 ld 文档,但我找不到它。主要是因为我不知道好的查询词。

最佳答案

这里有一个关于 GCC/Clang 中函数名称重整(除其他外)如何工作的长篇引用:

http://mentorembedded.github.io/cxx-abi/abi.html#mangling

在 5.1.5 类型编码部分,您会看到“ji”代表“unsigned int”和“int”。

开头的_Z来自5.1.2节(所有函数名的前缀),“7”是名称“JS_Init”的长度。

希望对您有所帮助!

关于ios - Clang/LD 函数分解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16565332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com