最新消息:iOS编程开发交流群(6906921) ,Mac.Cocoa开发交流群(7758675) 欢迎iOS/macOS开发编程爱好及学习者加入!

iOS开发之macOS下kxsmb编译smb类库

iOS 天狐 118浏览 5评论

1.下载github源码

git clone https://github.com/kolyvan/kxsmb/

2.下载适配过iOS的samba

下载https://github.com/shaojiankui/samba-iOS 将samba-iOS目录里所有内容放入kxsmb根目录的samba目录下,如果没有samba目录创建一个。

Rake的时候理论上会从samba官方自动下载samba包然后解压。但是自动下载的samba会报错。

这是修改过后的samba,Xcode9 iOS11以后,废弃了system方法。所以可以找替代方法逐个修改使用到system的.c文件

system(cmd) 改为 popen(cmd, "r"),修改记录https://github.com/shaojiankui/samba-iOS/commit/e3b1dfe072e1d1e5470f94e9b1d461ac2933932d

github源码是我自己修改过后,并且rake成功的samba源码。

2.Rake

cd到kxsmb

直接执行 rake

如果编译成功会如下图所示。

3.报错解决

1.Xcode缺少crt_externs.h

iOS7模拟器以后移动了crt_externs.h的位置。

crt_externs.h内容如下,创建crt_externs.h文件保存到 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include目录。

2.提示autoconf版本错误解决办法

3.如果提示No Rakefile found

则需要安装 autoconf、automake、libtool

4.报错'system' is unavailable: not available on iOS

解决办法:

Xcode9 iOS11以后,废弃了system方法。所以可以找替代方法逐个修改使用到system的.c文件

system(cmd) 改为 popen(cmd, "r") 替代

posix_spawn也可以替代system,system(cmd) 改为 run_cmd(cmd) 替代。

5.如果提示以下问题。

解决办法,执行终端rake之前执行export(重新rake需要恢复samba文件夹到未rake状态,因为rake会生成缓存文件,我使用git 管理了下这个目录,就直接revert了,也可以直接替换成新的)

 

参考博客:

https://blog.csdn.net/lovechris00/article/details/80524801

https://blog.csdn.net/weixin_39546911/article/details/80606449

转载请注明:天狐博客 » iOS开发之macOS下kxsmb编译smb类库

微信 OR 支付宝 扫描二维码
为天狐 打赏
非常感谢你的支持,哥会继续努力!
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (5)

  1. hi 老哥最近我也在编给ios用的smb库.根据你这个教程 一直报错 Tasks: TOP => default => build_all => build_smb_armv7
    waiwaixia2周前 (11-27)回复
    • 我擦。。我昨天才build完啊,xcode10. macos10.14
      天狐2周前 (11-27)回复
      • 我已经吐血了...死活build不过去
        waiwaixia2周前 (11-27)回复
  2. 执行终端rake之前执行export 也没用...
    waiwaixia2周前 (11-27)回复
  3. 还有你编译这个库的xcode版本是多少呢? 我这边是xcode10.1,系统是mojave
    waiwaixia2周前 (11-27)回复