[Samba] compile on solaris 64bit, static winbind

Dirk Jakobsmeier dirk.jakobsmeier at wige.com
Thu Oct 8 22:13:10 MDT 2009


Hello Eric,

Am Donnerstag 08 Oktober 2009 14:26:22 schrieb Eric Boehm:
> On Thu, Oct 08, 2009 at 07:13:40AM +0200, Dirk Jakobsmeier wrote:
> >>>>> "Dirk" == Dirk Jakobsmeier <dirk.jakobsmeier at wige.com> writes:
> 
>     Dirk> Hello Eric, yes me again,
> 
>     >> because several CFLAGS where missing in Makefile like:
>     >>
>     >> bin/smbd: $(BINARY_PREREQS) $(SMBD_OBJ) bin/libtalloc.so
>     >> bin/libtdb.so bin/libwbclient.so @echo Linking $@ @$(CC) -o $@
>     >> $(SMBD_OBJ) $(LDFLAGS) $(LDAP_LIBS) \ $(KRB5LIBS) $(DYNEXP)
>     >> $(PRINT_LIBS) $(AUTH_LIBS) \ $(ACL_LIBS) $(PASSDB_LIBS) $(LIBS)
>     >> $(DNSSD_LIBS) >
> 
>     Dirk> $(AVAHI_LIBS)
> 
>     >> \ $(POPT_LIBS) $(LIBTALLOC_LIBS) $(LIBTDB_LIBS) \
>     >> $(LIBWBCLIENT_LIBS) $(ZLIB_LIBS)
>     >>
>     >> No CFLAGS where set. So after adding them to every single line
>     >> in Makefile i just added CFLAGS to LDFLAGS (they are used in
>     >> every CC line). Then after copying libtalloc and libtdb
>     >> manually to destination direcotry and trying smbstatus i got:
>     >>
>     >> ld.so.1: smbstatus: fatal: relocation error: R_AMD64_PC32: file
>     >> /usr/local/samba/lib/libtalloc.so: symbol main: value
>     >> 0x2800148234f does not fit
>     >> 
samba at lists.samba.org
>     >> This error is with all shared libraries i use when i compiled
>     >> 64bit >
> 
>     Dirk> binaries.
> 
>     >> So I have to use static version of samba. Or do you have any
>     >> tip how to work around this problem. The solaris 64bit
>     >> installation has got both, 32bit and 64bit libraries. Perhaps
>     >> this is the problem.
> 
>     Dirk> i've found the problem after concentrating me on the
>     Dirk> relocation problem. I've found an article related on gcc and
>     Dirk> solaris ld and shared libraries. The option -G (shared libs
>     Dirk> using gcc) does not tell the solaris (/usr/ccs/bin/ld)
>     Dirk> linker to use share libraries. I have to change this options
>     Dirk> in the Makefile to -fPIC -shared and then samba compiles
>     Dirk> using shared libs. So now i will go on with my tests and
>     Dirk> will tell the list if everythink works.
> 
>     Dirk> Thank you for opening my mind to search for the problem with
>     Dirk> the shared libraries.
> 
> Another hint I can give you when you are building a 64 bit Samba is to
> specify the necessary CFLAGS, LDFLAGS when  you run configure.
> 
> Here's how I run configure when building with the gcc compiler.
> 
> I create a small shell script called 'myconfigure'
> 
> cat myconfigure
> CC='gcc' CXX=g++ \
> CPPFLAGS='-D__EXTENSIONS__ -I/usr/local/include
>  -I/usr/local/openldap/include -I/usr/local/sasl/include
>  -I/usr/local/kerberos/include -I/usr/local/BerkeleyDB/include
>  -I/usr/local/openssl/include' \ CFLAGS='-g -m64' \
> LDFLAGS='-L/opt/corp/local/samba/lib -R/opt/corp/local/samba/lib
>  -R\$$ORIGIN/../lib' \ ../source/configure \
> --prefix=/opt/corp/local/samba \
> --with-libiconv=/usr/local \
> --with-readline=/usr/local \
> --with-ldap \
> --with-krb5=/usr/local/kerberos \
> --with-ads \
> --with-automount \
> --with-libsmbclient \
> --with-acl-support \
> --with-winbind
> 
> You will obviously need to adapt this for your own environment, but I
> think you get the idea. You can remove the -R\$$ORIGIN/../lib. I put
> all the shared libraries I need in the samba lib directory. That's
> there in case I want to run samba from another location.
> 
> If you are using the Sun Studio compiler, here's a slightly different
> configuration of samba. The relevant changes are for CC and CFLAGS
> 
> CC='cc' CXX=CC \
> CFLAGS='-g -xarch=v9a' \
> 
> CC='cc' CXX=CC \
> CPPFLAGS='-D__EXTENSIONS__ -I/usr/local/include' \
> CFLAGS='-g -xarch=v9a' \
> LDFLAGS='-L/opt/corp/local/samba/lib -R/opt/corp/local/samba/lib
>  -L/usr/local/lib/sparcv9 -R/usr/local/lib/sparcv9 -L/usr/local/lib
>  -R/usr/local/lib' \ ../source/configure \
> --with-libiconv=/usr/local \
> --with-readline=/usr/local \
> --enable-debug \
> --prefix=/opt/corp/local/samba

i have nearly the same options now and it seems like everything is working. 
The main problem was the switch -G that should be a -fPIC and -shared one.

Many thanks for your informations that helped me a lot.

Regards

-- 

Dirk


More information about the samba mailing list