gpt4 book ai didi

c - 为什么函数存在于.o文件中,但不存在于.so文件中?

转载 作者:行者123 更新时间:2023-11-30 16:30:18 26 4
gpt4 key购买 nike

为什么函数MyFunc()存在于.o文件中,但不存在于.so文件中?.o 文件示例:

00019350 g     F .text  00000034 MyFunc

在 .so 文件中,我没有看到函数“MyFunc”。

最佳答案

我明白了。我的麻烦发生是因为我错误地依赖了声明函数的方法。

我忘记澄清我正在从 asterisk 1.4 转移旧代码。至 Asterisk 13.21。 (http://downloads.asterisk.org/pub/telephony/asterisk/)注意:该项目中定义导出函数的方式是asterisk公司自己的(自13版本起)。因此,为了使导出的函数在“.so”文件中可用,这些函数必须在文本文件(带有前缀“LINKER_SYMBOL_PREFIX”)中显式指定,该文件与源文件具有相同的名称,但具有扩展名“.exports.in”,例如:

myfile.h (contains: int MyFunc();)
myfile.c (contains: int MyFunc(){})
myfile.exports.in (contains: LINKER_SYMBOL_PREFIXMyFunc)

编译后,所有需要的功能将在“myfile.so”中可用。这就是设计。

非常感谢大家。

关于c - 为什么函数存在于.o文件中,但不存在于.so文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51290408/

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