在ubuntu14.04上搭建Objective-C开发环境

我们的机器人需要iOS客户端,于是要招iOS开发人员,而我们都不懂iOS开发,于是我紧急了解了下Objective-C(以下简称OC)的历史和语法,然后想在ubuntu上动手试试OC编程,于是按照这篇文章搭建环境并编译helloworld代码

gcc `gnustep-config --objc-flags` -lgnustep-base hello.m -o hello

结果报错:

/tmp/ccNFKMXF.o:在函数‘main’中:
/home/haipeng/projetcs/ios/hello.m:5:对‘objc_get_class’未定义的引用
/home/haipeng/projetcs/ios/hello.m:5:对‘objc_msg_lookup’未定义的引用
/home/haipeng/projetcs/ios/hello.m:5:对‘objc_msg_lookup’未定义的引用
/home/haipeng/projetcs/ios/hello.m:7:对‘NSLog’未定义的引用
/home/haipeng/projetcs/ios/hello.m:8:对‘objc_msg_lookup’未定义的引用
/tmp/ccNFKMXF.o:在函数‘__objc_gnu_init’中:
/home/haipeng/projetcs/ios/hello.m:10:对‘__objc_exec_class’未定义的引用
/tmp/ccNFKMXF.o:(.data.rel+0x0):对‘__objc_class_name_NSConstantString’未定义的引用
/tmp/ccNFKMXF.o:(.data.rel+0x8):对‘__objc_class_name_NSAutoreleasePool’未定义的引用
collect2: error: ld returned 1 exit status

上面的报错信息明显是 链接错误,我检查了GNUstep的安装,有gnustep-base库。又搜索了其他相关文章,原来还依赖objc库,加上

gcc `gnustep-config --objc-flags` -lobjc -lgnustep-base hello.m -o hello

结果还是相同的错误 尴尬

该有的库都有了,还出错,想起gcc由来已久的feature:

        GCC在链接时对依赖库的顺序是敏感的,被依赖的库必须放在后面,比如libfoo.a依赖libbar.a,必须写成-lfoo -lbar这样的顺序,否则链接将出错。

命令行调整成以下后问题解决。

gcc `gnustep-config --objc-flags` hello.m -o hello -lgnustep-base -lobjc

运行输出

haipeng@whp:~/projetcs/ios$ ./hello 
2016-07-29 09:43:39.422 hello[4253] hello world

老外写的文章一样不让人放心呀 再见

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值