Cross Compiling Samba
Download the source and uncompress:

tar -xzf samba-3.6.23.tar.gz

And cross compile for ARM:

cd samba-3.6.23/source3
./configure --without-krb5 --without-ldap --without-ads \
  --disable-cups --enable-swat=no --with-winbind=no \
  --target=arm-linux-gnueabi --host=arm-linux-gnueabi \
  --prefix= --with-configdir=/etc \
  samba_cv_CC_NEGATIVE_ENUM_VALUES=yes \    
  libreplace_cv_HAVE_GETADDRINFO=no \
make install DESTDIR=/home/export/rootfs

Creating smb.conf
Create a Samba configuration file (smb.conf) and place it in /etc. Below is a minimal example configuration, sharing the home directories located in /home.

workgroup = WORKGROUP
netbios name = SAMBA_FS
path = /home
writable = yes
comment = Home Directories

Starting Samba
Samba can be started using the following. smbd is the main Samba3 daemon and handles the SMB protocol. nmbd provides NetBIOS name server support.

/sbin/smbd -D
/sbin/nmbd -D

Creating users
You can add new Samba users using

smbpassword -a <username>

To be successful, there must be an entry in /etc/passwd corresponding to the user.

Notes on minimal systems
If smbd or nmbd reports smbd: error while loading shared libraries: cannot open shared object file: No such file or directory, then you are missing the GCC low-level runtime library. You can copy it from your arm-linux-gnueabi cross compiler:

cp /usr/arm-linux-gnueabi/lib/ /home/export/rootfs/lib
If smbd fails to start, check the logs in /var/log.smbd. If smbd fails to daemonise and there is no error message, potentially you have a user account problem. If you don’t have a /etc/passwd file, create one with a root and nobody user:


Download pre-built binaries
The link below contains a bzip2 tarball of Samba compiled for ARM:

samba-3.6.3-arm-none-linux-gnueabi.tar.bz2 [md5hash 2e433743d8531644e71010f4a122d1bd]
Built using :
arm-none-linux-gnueabi-gcc version 4.6.1 (Sourcery CodeBench Lite 2011.09-70)

samba-3.6.23-arm-linux-gnueabi.tar.bz2 [md5hash 52c8c8883fa1387623491c3ba1ca661f]
Built using :
arm-linux-gnueabi-gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-1ubuntu1)

./configure --without-krb5 --without-ldap --without-ads --disable-cups --enable-swat=no --build=x86_64-linux-gnu --with-winbind=no --target=arm-linux-gnueabihf --host=arm-linux-gnueabihf --prefix= --with-configdir=/etc samba_cv_CC_NEGATIVE_ENUM_VALUES=yes libreplace_cv_HAVE_GETADDRINFO=no ac_cv_file__proc_sys_kernel_core_pattern=yes ac_cv_func_getpwnam=no ac_cv_func_getgrnam=no ac_fn_c_try_run=no

./configure CC=arm-hisiv300-linux-gcc LD=arm-hisiv300-linux-ld ranlid=arm-hisiv300-linux-ranlid AR=arm-hisiv300-linux-ar --target=arm-linux --host=arm

mkdir -p /usr/local/samba/bin /usr/local/samba/lib /usr/local/samba/private /usr/local/samba/var

workgroup = workgroup
server string = camera
netbios name =camera
guest account=root
security =share
interfaces = ra0

path = /mnt/mmc/
guest ok=yes
writable = yes
create mode=0777
directory mode=0777