最近做一个samba相关的项目遇到了smb编译上的一些问题,最终编译成功,分享一下。
由于第一次写,而且编译上也是才接触,大家见谅哈。
1. 前期问题请参照:https//blog.youkuaiyun.com/lovechris00/article/details/80524801
上面的问题都遇见了。
按照上面步骤走向了下一个问题:
../lib/util/fault.c:134:13: error: 'system' is unavailable: not available on iOS
result = system(cmdstring);
^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/stdlib.h:195:6: note:
'system' has been explicitly marked unavailable here
int system(const char *) __DARWIN_ALIAS_C(system);
^
1 error generated.
The following command failed:
...
...
make: *** [../lib/util/fault.o] Error 1
rake aborted!
******** Build failed ********
/Users/administrator/Downloads/kxsmb-master/Rakefile:42:in `system_or_exit'
/Users/administrator/Downloads/kxsmb-master/Rakefile:219:in `block in buildArch'
/Users/administrator/Downloads/kxsmb-master/Rakefile:218:in `each'
/Users/administrator/Downloads/kxsmb-master/Rakefile:218:in `buildArch'
/Users/administrator/Downloads/kxsmb-master/Rakefile:243:in `block in <top (required)>'
Tasks: TOP => default => build_all => build_smb_armv7
(See full trace by running task with --trace)
'system' is unavailable: not available on iOS
百度了一下才知道Xcode9 已经废除了system方式(我也不晓得是不是哈,反正就是他的毛病)
由于才接触 我也不清楚使用什么替换他,就将编译环境切换成了Xcode8之后,
再次rake果然不报上面的错误了,当时以为就这样子过了
最后编译source3中源码的时候出现问题:
checking whether we are big endian... configure: error: in `/Users/administrator/Downloads/kxsmb-master/kxsmb/samba/source3':
configure: error: cannot run test program while cross compiling
See `config.log' for more details
rake aborted!
******** Build failed ********
/Users/administrator/Downloads/kxsmb-master/Rakefile:42:in `system_or_exit'
/Users/administrator/Downloads/kxsmb-master/Rakefile:216:in `buildArch'
/Users/administrator/Downloads/kxsmb-master/Rakefile:260:in `block in <top (required)>'
Tasks: TOP => default => build_all => build_smb_i386
(See full trace by running task with --trace)
最后查找资料:
https://github.com/kolyvan/kxsmb/issues/37
https://github.com/harddog/KxSMB_Pod
将samba文件加删除之后
export samba_cv_big_endian=no
export samba_cv_little_endian=yes
export samba_cv_CC_NEGATIVE_ENUM_VALUES=yes
export libreplace_cv_HAVE_GETADDRINFO=no
export samba_cv_HAVE_WRFILE_KEYTAB=no
export smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no
export smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes
export ac_cv_file__proc_sys_kernel_core_pattern=yes
rake
就成功了。
总的说来有比较麻烦,Xcode8 估计好多朋友都没有了,需要重新去下载。 最简单的办法是找到替换system的方法。
到此对于目前项目告一段落, 然后我需要将smb编译到ffmpeg库中,有这方面经验的朋友请联系一下我,谢谢。
对于上面的system问题补充解决方案:https://github.com/holzschu/ios_system