参考这一篇文章http://blog.csdn.net/jk198310/article/details/15809341
然后结合自己实际操作过程中遇到的一些问题总结出来这个流程
最近做一个关于把samba服务移植到安卓项目,网上不乏一些文章,但是照着文章做还是会出现好多问题,不得不各种百度,google,终于克服困难成功运行起来,
所以把自己记得的流程记录下来,结合网上一些文章总结,并将自己实际遇到的问题贴出来;
废话少说
下面是具体流程:
我用的samba包是samba-3.5.9,交叉编译工具包是arm-linux-gcc-4.4.3.tar.gz
首先解压samba-3.5.9.tar.gz,进入到 samba-3.5.9目录下的source3目录下
:~/programfiles$ cd samba-3.5.9/source3/
:~/programfiles/samba-3.5.9/source3$

source3/lib/system.c作修改4个函数
lib/system.c
中的4个函数
struct passwd *sys_getpwnam(const char *name)
struct passwd *sys_getpwuid(uid_t uid)
struct group *sys_getgrnam(const char *name)
struct group *sys_getgrgid(gid_t gid)
为了避免出错,建议先备份system.文件,或者像我这样把原始四个函数注释掉,然后添加修改后的函数,如下:
/*
struct passwd *sys_getpwnam(const char *name)
{
return getpwnam(name);
}

struct passwd *sys_getpwuid(uid_t uid)
{
return getpwuid(uid);
}

struct group *sys_getgrnam(const char *name)
{
return getgrnam(name);
}

struct group *sys_getgrgid(gid_t gid)
{
return getgrgid(gid);
}
*/

static struct passwd rootpw = {
     "root",
     "root",
     0,
     0,
     "root",
     "/root"
     "/system/bin/sh",
};

struct passwd *sys_getpwnam(const char *name)
{
//    return getpwnam(name);
     return &rootpw;
}

struct passwd *sys_getpwuid(uid_t uid)
{
//    return getpwuid(uid);
     return &rootpw;
}

static char *rootmem[] = {
     "root"
};
static struct group rootgr = {
     "root",
     "root",
     0,
     rootmem,
};

struct group *sys_getgrnam(const char *name)
{
     return &rootgr;
//    return getgrnam(name);
}

struct group *sys_getgrgid(gid_t gid)
{
     return &rootgr;
//    return getgrgid(gid);
}

然后在source3目录下编写交叉编译的配置脚本insatll:
#!/bin/bash
CROSS_COMPILE=/home/sunfch/programfiles/opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-                                    //这个根据你自己解压后交叉编译工具的目录,及选择arm-none-linux-gnueabi-gcc   编译,

RUNTIME_DIR=/data/data/samba
./configure \
CC="$CROSS_COMPILE"gcc \
AR="$CROSS_COMPILE"ar \
LD="$CROSS_COMPILE"ld \
RANLIB="$CROSS_COMPILE"ranlib \
--host=i686 \
--target=arm-linux \
--disable-cups \
--disable-iprint \
--prefix=$RUNTIME_DIR \
--exec-prefix=$RUNTIME_DIR \
--with-logfilebase=$RUNTIME_DIR/var/log \
--with-swatdir=$RUNTIME_DIR/usr/local/swat \
--with-rootsbindir=$RUNTIME_DIR/sbin \
--with-lockdir=$RUNTIME_DIR/var/lock \
--with-piddir=$RUNTIME_DIR/var/lock \
--with-privatedir=$RUNTIME_DIR/etc/samba \
--with-configdir=$RUNTIME_DIR/etc/samba \
--cache-file=armsel-linux.cache \
--with-static-modules=vfs_fake_perms \

如果出现如下错误:
3.1 error: cannot run test program while cross compiling错误
           checking that the C compiler understands negative enum values... configure: error: in `/root/samba-3.3.3/source':
           configure: error: cannot run test program while cross compiling
解决:
echo samba_cv_CC_NEGATIVE_ENUM_VALUES=yes>armsel-linux.cache

再一下执行脚本

然后在source3目录下执行:
make LDFLAGS="-all-static -static"

上面这外是为把smbd, nmbd等编译为静态的。(不然在Android上执行会出现 no such file or directory问题)

我在执行这一步遇到了以下错误:
error:file not recognized;file format not recognized

或者
configure:error: require function not found
错误纠结了很长时间,最后才发现交叉编译gcc版本问题,make distclean清除,将交叉编译工具改为我上面说的工具,应该就没问题了:

随便在某个目录下(能快速找到就行)建一个smb.conf配置文件,比如我直接在source3下
vim smb.conf

[global]
interfaces = 192.168.0.103/24
workgroup = WORKGROUP
server string = Samba on Android
netbios name = ANDROID
remote announce = 255.255.255.255
encrypt passwords = yes
security = user
#security = share
restrict anonymous = 1
load printers = no
printcap name = /dev/null
disable spoolss = yes
deadtime = 5
delete readonly = yes
nt acl support = no
inherit permissions = yes
socket options = SO_SNDBUF=16384 SO_RCVBUF=16384
[test]
#vfs objects = fake_perms
comment = Android /mnt/sdcard
#path = /mnt/sdcard
path = /data/data/samba/var/tmp
#path = /etc
force user = root
read only = no
writable = yes
#guest ok = no
browseable = yes

然后建立adb shell 进入到手机adb下
cd /data/data/
mkdir samba
cd samba
mkdir bin etc lib var
cd etc
mkdir samba
cd ../var
mkdir lock tmp log

文件夹建立完成后exit退出adb,然后在 source3目录下
adb push smb.conf /data/data/samba/etc/samba    //将smb.conf导入手机/data/data/samba/etc/samba中

进入到bin目录下:
adb push smbd /data/data/samba/bin
adb push smbpasswd /data/data/samba/bin

在adb下用
export TMPDIR=/data/data/samba/var/tmp/              //设置TMPDIR环境变量

bin/smbd -D 启动samba服务,
bin/smbpasswd -a root 添加root用户

你在tmp目录下建立一个目录share,
然后在adb下用netcfg命令查看手机IP 地址;
这时候你就可以通过windows下,用win+R键调出运行框
输入\\192.168.0.103
就可输入root和密码,登录成功就可一看到share目录

本人亲测
有什么问题可以联系我:qq:996340566
skype:zhou.lei1992

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script> 阅读(62) | 评论(0) | 转发(0) |

0

上一篇:linux网络编程——套接字(socket)入门

下一篇:boa服务移植到安卓手机

相关热门文章
  • 开发基于高德SDK的Android车载...
  • gnuplot用于科学研究
  • 百度导航Android版问题集...
  • 2015即将结束,2016年即将到来...
  • 欢迎HelloAndroid123在ChinaUn...
  • Android之开发环境搭建
  • Android自定义View的实现...
  • AndroidManifest.xml配置文件...
  • Android相对布局+圆角按钮+Sha...
  • 查看Android应用包名package和...
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...
评论热议

【原创】samba移植到android流程相关推荐

  1. android移植wifi驱动流程porting

    android载入wifi驱动流程 wifi_load_driver check_wifi_chip_type_string get_wifi_device_id save_wifi_chip_typ ...

  2. 将tensorflow训练好的模型移植到Android (MNIST手写数字识别)

    将tensorflow训练好的模型移植到Android (MNIST手写数字识别) [尊重原创,转载请注明出处]https://blog.csdn.net/guyuealian/article/det ...

  3. 在英特尔® 凌动™ 处理器上将 OpenGL* 游戏移植到 Android* (第一部分)

    将游戏和其他使用大量 3D 图形的应用从 OpenGL 标准移植到 Google Android 设备(包括构建在英特尔® 凌动™ 微架构上的设备)存在巨大的机遇,因为基于 OpenGL 的游戏.游戏 ...

  4. 编译FFmpeg4.1.3并移植到Android app中使用(最详细的FFmpeg-Android编译教程)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/bobcat_kay/article/d ...

  5. Chrome V8 引擎移植到 Android

    简介 Chrome V8 引擎是 Google 自己开发的 javascript 脚本引擎.开发语言为 C++. V8 github 页面 V8 官方博客 V8 开发者页面 在 Android 平台上 ...

  6. 简单的Android视频转码器[1]:把FFMpeg移植到Android

    1 项目介绍 1.1 项目介绍 FFMpeg是做音视频开发的同学都会接触的一个开源项目,现将其移植到Android上,写一个简单的视频格式转码工具,作为自己Android jni开发的一个入门学习和A ...

  7. ffmpeg 移植到 android 并使用

    同步更新至个人blog:http://dxjia.cn/2015/07/ffmpeg-porting-to-android/ 空闲做了个小应用,从视频里截图,然后再将截图拼接为一个gif动画: 起初使 ...

  8. flappy bird游戏源代码揭秘和下载后续---移植到android真机上

    前言:         上一篇博客 flappy bird游戏源代码揭秘和下载,源码是运行在window或者mac系统上的,现在我们需要把代码移植到android真机上,让小鸟在手机里飞起来! ps: ...

  9. Qt 移植到Android

    Qt 移植到Android 移植到Android 移植到Android 在本节中,我们将现有的Qt应用程序移植到Android并将其部署到设备. 大多数Qt应用程序应易于移植到Android,除非它们 ...

最新文章

  1. MindSpore技术理解(下)
  2. HDU4920 Matrix multiplication 矩阵
  3. 数论 - 简单数位推理 --- NYIST 514
  4. jackson使用示例
  5. JavaScript对TreeView的操作全解
  6. asp.net MVC分页
  7. 可能是最强大的【CSS】动画库
  8. 自定义表单-列表字段的数据源绑定
  9. steamcommunity 302占用端口
  10. MacOS打开多个微信的方法(代码+脚本)
  11. cmd把一个较大的文件分割_将文件分割成较小的文件
  12. stm32 f105 RBT6 建立工程头文件
  13. 当微信小程序遇上filter~
  14. 1000个瓶子里面999瓶是水,多少次试验确定哪瓶是毒药
  15. 由于Windows无法加载这个设备所需要的驱动设备,导致这个设备工作异常(代码31)VMware Virtual Ethernet Adapter for VMnet1 or VMnet8
  16. selenium豆瓣登陆
  17. 松川仪表IPO被终止:年营收2.58亿 林茂波夫妇控制77%股权
  18. grep精确匹配--w参数的使用
  19. _bzoj1003 [ZJOI2006]物流运输【预处理】
  20. 3D游戏建模 高模“神仙药瓶”次世代全流程

热门文章

  1. lol老是闪退到桌面_lol闪退到桌面怎么解决
  2. Qt qml 下使QtCharts
  3. ListView和条目点击事件、条目长按事件
  4. 《寓言中的经济学》简明纪要 - Part 1
  5. linux下google浏览器字体不清晰,google浏览器的字体模糊的原因是什么_怎么解决 - 驱动管家...
  6. AtCoder Beginner Contest 126
  7. VUE3(二十四)自定义alert弹窗组件
  8. 选定区域着色html,PS怎么填充颜色到选中区域?PS填充颜色到选中区域的方法
  9. STM32F407系统标准库函数之时钟配置 和 位带操作
  10. HbuilderX 小程序转快应用