Discussion:
Link against libtirpc
Zachary Kotlarek
2011-07-05 21:14:34 UTC
Permalink
I'm building busybox against glibc-2.14, which no longer includes RPC headers or symbols. To compensate for that loss of functionality I've installed libtirpc and I've got busybox compiling against its headers without a problem.

But I need to link with "-ltirpc" so it can find the related symbols, and I can't figure out how to make that happen -- I couldn't find an LD_FLAGS configuration option, and the CFLAGS option doesn't seem to affect linking.

How can I tell busybox to include libtirpc when linking?

Zach

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2746 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/busybox/attachments/20110705/8f7f1a8c/attachment.p7s>
Dan Fandrich
2011-07-05 21:47:07 UTC
Permalink
Post by Zachary Kotlarek
I'm building busybox against glibc-2.14, which no longer includes RPC headers or symbols. To compensate for that loss of functionality I've installed libtirpc and I've got busybox compiling against its headers without a problem.
But I need to link with "-ltirpc" so it can find the related symbols, and I can't figure out how to make that happen -- I couldn't find an LD_FLAGS configuration option, and the CFLAGS option doesn't seem to affect linking.
How can I tell busybox to include libtirpc when linking?
You can specify it in LDLIBS on the make command-line, but since that
overrides the build-in value, you'll probably need to set it to something
like LDLIBS='crypt m tirpc' to successfully link.
Post by Zachary Kotlarek
Dan
Zachary Kotlarek
2011-07-06 01:09:48 UTC
Permalink
Post by Dan Fandrich
You can specify it in LDLIBS on the make command-line, but since that
overrides the build-in value, you'll probably need to set it to something
like LDLIBS='crypt m tirpc' to successfully link.
And pthread, at least for me. But with that it works great. Thanks for the help.

Zach

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2746 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/busybox/attachments/20110705/0a5375ae/attachment.p7s>
walter harms
2011-07-06 07:22:26 UTC
Permalink
you can alos create a Makefile.local
and add
LDFLAGS+="tirpc"

the advantage is that you can update busybox with the fear that a new
makefile file overwrite the modified one.

re,
wh
Post by Zachary Kotlarek
Post by Dan Fandrich
You can specify it in LDLIBS on the make command-line, but since that
overrides the build-in value, you'll probably need to set it to something
like LDLIBS='crypt m tirpc' to successfully link.
And pthread, at least for me. But with that it works great. Thanks for the help.
Zach
_______________________________________________
busybox mailing list
busybox at busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
Mike Frysinger
2011-07-11 04:53:15 UTC
Permalink
Post by Zachary Kotlarek
I'm building busybox against glibc-2.14, which no longer includes RPC
headers or symbols. To compensate for that loss of functionality I've
installed libtirpc and I've got busybox compiling against its headers
without a problem.
But I need to link with "-ltirpc" so it can find the related symbols, and I
can't figure out how to make that happen -- I couldn't find an LD_FLAGS
configuration option, and the CFLAGS option doesn't seem to affect
linking.
How can I tell busybox to include libtirpc when linking?
since this is going to hit many people, we probably want to add some helper
code to the build system.

when i looked at the builds, busybox only needed the headers. what symbols
did you find busybox needed and were provided by -ltirpc ?

also, please properly wrap your long lines in your e-mails.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.busybox.net/pipermail/busybox/attachments/20110711/2729a29c/attachment.asc>
Zachary Kotlarek
2011-07-11 05:40:41 UTC
Permalink
Post by Mike Frysinger
since this is going to hit many people, we probably want to add some helper
code to the build system.
I agree, it's going to be a problem eventual. But at least
for the time being most distros are reverting the removal of
the NIS/RPC headers and functions. Beside being a hassle,
libtirpc is not quite ready to be a full replacement -- libtirpc
itself requires some of the NIS headers that glibc-2.14
removes.
Post by Mike Frysinger
when i looked at the builds, busybox only needed the headers. what symbols
did you find busybox needed and were provided by -ltirpc ?
It looks like:
pmap_*
xdr_*
clnt_*
bindresvport
authunix_create_default
which occur in mount and inetd.

The linking portion of the build log follows:

Trying libraries: crypt m
Failed: -Wl,--start-group -lcrypt -lm -Wl,--end-group
Output of:
gcc -Wall -Wshadow -Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter -Wunused-function -Wunused-value -Wmissing-prototypes -Wmissing-declarations -Wdeclaration-after-statement -Wold-style-definition -fno-builtin-strlen -finline-limit=0 -fomit-frame-pointer -ffunction-sections -fdata-sections -fno-guess-branch-probability -funsigned-char -static-libgcc -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 -Os -static -o busybox_unstripped -Wl,--sort-common -Wl,--sort-section,alignment -Wl,--start-group applets/built-in.o archival/lib.a archival/libarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a mailutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a printutils/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a util-linux/volume_id/lib.a archival/built-in.o archival/libarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o mailutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o printutils/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o util-linux/volume_id/built-in.o -Wl,--end-group -Wl,--start-group -lcrypt -lm -Wl,--end-group
==========
networking/lib.a(nslookup.o): In function `print_host':
nslookup.c:(.text.print_host+0x3f): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
networking/lib.a(ipcalc.o): In function `ipcalc_main':
ipcalc.c:(.text.ipcalc_main+0x201): warning: Using 'gethostbyaddr' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
util-linux/lib.a(mount.o): In function `nfsmount':
mount.c:(.text.nfsmount+0xd4): warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
networking/lib.a(inetd.o): In function `reread_config_file':
inetd.c:(.text.reread_config_file+0x75b): warning: Using 'getservbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
networking/lib.a(netstat.o): In function `ip_port_str':
netstat.c:(.text.ip_port_str+0x3e): warning: Using 'getservbyport' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
networking/lib.a(inetd.o): In function `reread_config_file':
inetd.c:(.text.reread_config_file+0x6dd): warning: Using 'getrpcbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
networking/lib.a(inetd.o): In function `unregister_rpc':
inetd.c:(.text.unregister_rpc+0x1f): undefined reference to `pmap_unset'
networking/lib.a(inetd.o): In function `register_rpc':
inetd.c:(.text.register_rpc+0x57): undefined reference to `pmap_unset'
inetd.c:(.text.register_rpc+0x73): undefined reference to `pmap_set'
networking/lib.a(inetd.o): In function `prepare_socket_fd':
inetd.c:(.text.prepare_socket_fd+0x7a): undefined reference to `bindresvport'
util-linux/lib.a(mount.o): In function `xdr_fhstatus':
mount.c:(.text.xdr_fhstatus+0xb): undefined reference to `xdr_u_int'
mount.c:(.text.xdr_fhstatus+0x2a): undefined reference to `xdr_opaque'
util-linux/lib.a(mount.o): In function `xdr_dirpath':
mount.c:(.text.xdr_dirpath+0x6): undefined reference to `xdr_string'
util-linux/lib.a(mount.o): In function `xdr_mountres3':
mount.c:(.text.xdr_mountres3+0xa): undefined reference to `xdr_enum'
mount.c:(.text.xdr_mountres3+0x29): undefined reference to `xdr_bytes'
mount.c:(.text.xdr_mountres3+0x42): undefined reference to `xdr_int'
mount.c:(.text.xdr_mountres3+0x50): undefined reference to `xdr_array'
util-linux/lib.a(mount.o): In function `nfsmount':
mount.c:(.text.nfsmount+0x800): undefined reference to `pmap_getmaps'
mount.c:(.text.nfsmount+0x99b): undefined reference to `clntudp_create'
mount.c:(.text.nfsmount+0x9ec): undefined reference to `clnttcp_create'
mount.c:(.text.nfsmount+0xa13): undefined reference to `clnt_spcreateerror'
mount.c:(.text.nfsmount+0xa25): undefined reference to `authunix_create_default'
mount.c:(.text.nfsmount+0xaa8): undefined reference to `clnt_sperror'
mount.c:(.text.nfsmount+0xacf): undefined reference to `clnt_sperror'
mount.c:(.text.nfsmount+0xc62): undefined reference to `bindresvport'
mount.c:(.text.nfsmount+0xcab): undefined reference to `pmap_getport'
collect2: ld returned 1 exit status
make[2]: *** [busybox_unstripped] Error 1
make[2]: Leaving directory `/usr/src/busybox/busybox-1.18.5'
make[1]: *** [comp] Error 2
make[1]: Leaving directory `/usr/src/busybox'
make: *** [all] Error 2
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2746 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/busybox/attachments/20110711/32273140/attachment-0001.p7s>
Loading...