基本上我可以在 xcode4 中创建和编译静态库,但 otool 无法读取这些函数。我设法做到了一次,这样它就可以工作,但从那以后的每一次它都失败了,所以我知道我一定错过了一个明显的步骤。
我目前所做的是在 xcode4 中创建一个基于视图的新应用程序,然后添加一个新目标(Numbers),在 Numbers 中我添加一个名为 File.c 的源文件,其内容是:
static int Get10()
{
return 10;
}
然后我编译它(确保我在构建方案下拉列表中选择了 Numbers |iPhone 4.3 Simulator)。
但是当我在 libNumbers.a 上运行 otool -S 时,我没有得到任何结果:
ranlib 结构的大小:0(数字 0)对象偏移字符串索引
我知道那里应该有一些东西,因为如果我在正确构建的 libNumbers.a 上运行 otool -S ,我会得到一些数字而不是 0:
ranlib 结构的大小:16(数字 2)对象偏移字符串索引 136 0 136 7
我真的不知道我到底做错了什么,我尝试回溯我对我所做的成功的lib编译所做的事情,但没有真正找到任何东西来表明为什么这些函数是用那个函数编译的,而不是用这些函数编译的。
如果您想在定义的翻译单元之外使用该函数,请不要使用
static
。您希望函数具有外部链接,只需省略 static
部分即可(外部链接是函数的默认设置) ).