gpt4 book ai didi

objective-c - clang 编译错误(对 objc_autoreleasepoolpush 的 undefined reference )

转载 作者:太空狗 更新时间:2023-10-30 03:55:19 28 4
gpt4 key购买 nike

所以,我安装了 Ubuntu 和 clang3.0 以及一个简单的程序。m:

#include <Foundation/Foundation.h>
int main()
{
@autoreleasepool{
NSLog(@"Hi");
}

return 0;
}

然后我尝试这样编译它:

clang first.m -I /usr/include/GNUstep/ -lgnustep-base -fconstant-string-class=NSConstantString -objc

我明白了

undefined reference to objc_autoreleasePoolPush
undefined reference to objc_autoreleasePoolPop

所以我用谷歌搜索了一下并安装了 objc2 并尝试了:

clang first.m -I /usr/include/GNUstep/ -lgnustep-base -fconstant-string-class=NSConstantString -objc2

但没有任何变化。也许有人解决了同样的问题?

最佳答案

在我的 Ubuntu 系统上安装了 libobjc2 后,您的 first.m 文件的副本会通过以下行为我编译:

clang first.m `gnustep-config --objc-flags` `gnustep-config --objc-libs` \
-I /usr/include/GNUstep/ -lgnustep-base

但也许这只是命令行末尾的错字?

第一个示例末尾的 -objc 和第二个示例末尾的 -objc2 指示 clang 编译器分别创建名为 bjc 和 bjc2 的可执行文件。您指的是 -lobj 吗?我认为 obj 库中的链接对于获取 Objective-C 运行时库至关重要。即使使用 libobjc2 项目,生成的库仍命名为 libobjc.so.x.y。如果您的命令不包含 -lobjc,我看不出它如何正确链接。我可能是错的,但没有它对我不起作用。

关于objective-c - clang 编译错误(对 objc_autoreleasepoolpush 的 undefined reference ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14921482/

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