[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