Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] link error building portmap
@ 2008-05-23 21:51 mike sander
  2008-05-24  3:07 ` [Buildroot] link error building portmap.... possible solution Mike Sander
  0 siblings, 1 reply; 2+ messages in thread
From: mike sander @ 2008-05-23 21:51 UTC (permalink / raw)
  To: buildroot

I'm trying to use nfs mount within busybox.    This requires mount & 
portmap.  I am getting a link failure that I cannot figure out.

I have enabled busybox  MOUNT, FEATURE_MOUNT_NFS, FEATURE_HAVE_RPC as 
well as uclibc  UCLIBC_HAS_RPC and top level  
CONFIG_BR2_PACKAGE_PORTMAP.  I have done a top level "make clean".

Here is the output of top level make.  I have even explicitly put the 
full path to libc.a in the link line (in portmap Makefile):



mike at himalia:/home/buildroot$ make

Checking build system dependencies:
BUILDROOT_DL_DIR clean:                         Ok
CC clean:                                       Ok
CXX clean:                                      Ok
CPP clean:                                      Ok
CFLAGS clean:                                   Ok
INCLUDES clean:                                 Ok
CXXFLAGS clean:                                 Ok
which installed:                                Ok
sed works:                                      Ok (/bin/sed)
GNU make version '3.81':                        Ok
C compiler '/usr/bin/gcc'
C compiler version '4.1.3':                     Ok
C++ compiler '/usr/bin/g++'
C++ compiler version '4.1.3':                   Ok
bison installed:                                Ok
flex installed:                                 Ok
gettext installed:                              Ok
makeinfo installed:                             Ok
Build system dependencies:                      Ok

rm -rf /home/buildroot/project_build_arm/uclibc/buildroot-config
mkdir -p /home/buildroot/project_build_arm/uclibc
cp -dpRf package/config/buildroot-config 
/home/buildroot/project_build_arm/uclibc/buildroot-config
/usr/bin/make -j1 
CC=/home/buildroot/build_arm/staging_dir/usr/bin/arm-linux-uclibc-gcc 
O="-Os  -I/home/buildroot/build_arm/staging_dir/usr/include 
-I/home/buildroot/build_arm/staging_dir/include 
--sysroot=/home/buildroot/build_arm/staging_dir/ -isysroot 
/home/buildroot/build_arm/staging_dir -mtune=arm9tdmi" -C 
/home/buildroot/build_arm/portmap_5beta
make[1]: Entering directory `/home/buildroot/build_arm/portmap_5beta'
/home/buildroot/build_arm/staging_dir/usr/bin/arm-linux-uclibc-gcc  
-Dperror=xperror -DCHECK_PORT  -DFACILITY=LOG_AUTH  
-DIGNORE_SIGCHLD            -Os  
-I/home/buildroot/build_arm/staging_dir/usr/include 
-I/home/buildroot/build_arm/staging_dir/include 
--sysroot=/home/buildroot/build_arm/staging_dir/ -isysroot 
/home/buildroot/build_arm/staging_dir -mtune=arm9tdmi    -c -o portmap.o 
portmap.c
/home/buildroot/build_arm/staging_dir/usr/bin/arm-linux-uclibc-gcc  
-Dperror=xperror -DCHECK_PORT  -DFACILITY=LOG_AUTH  
-DIGNORE_SIGCHLD            -Os  
-I/home/buildroot/build_arm/staging_dir/usr/include 
-I/home/buildroot/build_arm/staging_dir/include 
--sysroot=/home/buildroot/build_arm/staging_dir/ -isysroot 
/home/buildroot/build_arm/staging_dir -mtune=arm9tdmi    -c -o 
pmap_check.o pmap_check.c
/home/buildroot/build_arm/staging_dir/usr/bin/arm-linux-uclibc-gcc  
-Dperror=xperror -DCHECK_PORT  -DFACILITY=LOG_AUTH  
-DIGNORE_SIGCHLD            -Os  
-I/home/buildroot/build_arm/staging_dir/usr/include 
-I/home/buildroot/build_arm/staging_dir/include 
--sysroot=/home/buildroot/build_arm/staging_dir/ -isysroot 
/home/buildroot/build_arm/staging_dir -mtune=arm9tdmi   -o portmap  
/home/buildroot/build_arm/staging_dir/usr/lib/libc.a  portmap.o 
pmap_check.o from_local.o get_myaddress.o  
portmap.o: In function `main':
portmap.c:(.text+0x914): undefined reference to `svcudp_create'
portmap.c:(.text+0x9a0): undefined reference to `svctcp_create'
portmap.c:(.text+0xa1c): undefined reference to `svc_run'
collect2: ld returned 1 exit status
make[1]: *** [portmap] Error 1
make[1]: Leaving directory `/home/buildroot/build_arm/portmap_5beta'
make: *** [/home/buildroot/build_arm/portmap_5beta/portmap] Error 2






Make sure I'm pointing to the right libc.a:
mike at himalia:/home/buildroot$ arm-linux-gcc  -print-file-name=libc.a
/home/buildroot/build_arm/staging_dir/usr/lib/libc.a





Using nm, I verified that libc.a does in fact contain 2 of the 3 
unresolved external references.
mike at himalia:/home/buildroot$ nm 
/home/buildroot/build_arm/staging_dir/usr/lib/libc.a | grep svc_run
svc_run.os:
00000028 T svc_run
mike at himalia:/home/buildroot$ nm 
/home/buildroot/build_arm/staging_dir/usr/lib/libc.a | grep svctcp_create
00000354 T svctcp_create



Anyone have any ideas what is going on here?

Thanks in advance.

Mike

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Buildroot] link error building portmap.... possible solution
  2008-05-23 21:51 [Buildroot] link error building portmap mike sander
@ 2008-05-24  3:07 ` Mike Sander
  0 siblings, 0 replies; 2+ messages in thread
From: Mike Sander @ 2008-05-24  3:07 UTC (permalink / raw)
  To: buildroot

I think I may have a solution.   After a bit of work with ld --print-map 
flag I discovered portmap is using shared libraries (not static as I 
thought).  The shared lib appeared to be missing svc* functions.

I found that adding svc_run.c to the 
buildroot/toolchain_build_arm/uClibc-0.9.29/libc/inet/rpc/Makefile.in 
allowed the link step to complete.   I do not believe that this is the 
proper place for this change as this is in a generated target specific 
tree.  I have looked to docs & source tree to find the appropriate place 
but have been unable.   

If someone could point me to the correct location to patch that would be 
helpful.  

As well, if someone could apply this patch to buildroot that would be 
good as well.



Following is a patch to be applied from the following location:  
buildroot/toolchain_build_arm/uClibc-0.9.29/libc/inet/rpc.   If this is 
not a good way to submit a patch, any helpful suggestions would be 
appreciated.

--- start ---

diff -Naur old/Makefile.in new/Makefile.in
--- old/Makefile.in     2007-02-04 04:42:38.000000000 -0500
+++ new/Makefile.in     2008-05-23 22:25:46.000000000 -0400
@@ -15,7 +15,7 @@
       pmap_clnt.c pm_getmaps.c pm_getport.c pmap_prot.c pmap_prot2.c \
       rcmd.c rexec.c rpc_cmsg.c rpc_commondata.c rpc_dtablesize.c \
       rpc_prot.c rpc_thread.c rtime.c ruserpass.c sa_len.c \
-       svc.c svc_auth.c svc_authux.c \
+       svc.c svc_auth.c svc_authux.c svc_run.c \
       xdr.c xdr_array.c xdr_mem.c xdr_rec.c xdr_reference.c
endif

-- end ---


Regards,

Mike Sander.


mike sander wrote:
> I'm trying to use nfs mount within busybox.    This requires mount & 
> portmap.  I am getting a link failure that I cannot figure out.
>
> I have enabled busybox  MOUNT, FEATURE_MOUNT_NFS, FEATURE_HAVE_RPC as 
> well as uclibc  UCLIBC_HAS_RPC and top level  
> CONFIG_BR2_PACKAGE_PORTMAP.  I have done a top level "make clean".
>
> Here is the output of top level make.  I have even explicitly put the 
> full path to libc.a in the link line (in portmap Makefile):
>
>
>
> mike at himalia:/home/buildroot$ make
>
> Checking build system dependencies:
> BUILDROOT_DL_DIR clean:                         Ok
> CC clean:                                       Ok
> CXX clean:                                      Ok
> CPP clean:                                      Ok
> CFLAGS clean:                                   Ok
> INCLUDES clean:                                 Ok
> CXXFLAGS clean:                                 Ok
> which installed:                                Ok
> sed works:                                      Ok (/bin/sed)
> GNU make version '3.81':                        Ok
> C compiler '/usr/bin/gcc'
> C compiler version '4.1.3':                     Ok
> C++ compiler '/usr/bin/g++'
> C++ compiler version '4.1.3':                   Ok
> bison installed:                                Ok
> flex installed:                                 Ok
> gettext installed:                              Ok
> makeinfo installed:                             Ok
> Build system dependencies:                      Ok
>
> rm -rf /home/buildroot/project_build_arm/uclibc/buildroot-config
> mkdir -p /home/buildroot/project_build_arm/uclibc
> cp -dpRf package/config/buildroot-config 
> /home/buildroot/project_build_arm/uclibc/buildroot-config
> /usr/bin/make -j1 
> CC=/home/buildroot/build_arm/staging_dir/usr/bin/arm-linux-uclibc-gcc 
> O="-Os  -I/home/buildroot/build_arm/staging_dir/usr/include 
> -I/home/buildroot/build_arm/staging_dir/include 
> --sysroot=/home/buildroot/build_arm/staging_dir/ -isysroot 
> /home/buildroot/build_arm/staging_dir -mtune=arm9tdmi" -C 
> /home/buildroot/build_arm/portmap_5beta
> make[1]: Entering directory `/home/buildroot/build_arm/portmap_5beta'
> /home/buildroot/build_arm/staging_dir/usr/bin/arm-linux-uclibc-gcc  
> -Dperror=xperror -DCHECK_PORT  -DFACILITY=LOG_AUTH  
> -DIGNORE_SIGCHLD            -Os  
> -I/home/buildroot/build_arm/staging_dir/usr/include 
> -I/home/buildroot/build_arm/staging_dir/include 
> --sysroot=/home/buildroot/build_arm/staging_dir/ -isysroot 
> /home/buildroot/build_arm/staging_dir -mtune=arm9tdmi    -c -o 
> portmap.o portmap.c
> /home/buildroot/build_arm/staging_dir/usr/bin/arm-linux-uclibc-gcc  
> -Dperror=xperror -DCHECK_PORT  -DFACILITY=LOG_AUTH  
> -DIGNORE_SIGCHLD            -Os  
> -I/home/buildroot/build_arm/staging_dir/usr/include 
> -I/home/buildroot/build_arm/staging_dir/include 
> --sysroot=/home/buildroot/build_arm/staging_dir/ -isysroot 
> /home/buildroot/build_arm/staging_dir -mtune=arm9tdmi    -c -o 
> pmap_check.o pmap_check.c
> /home/buildroot/build_arm/staging_dir/usr/bin/arm-linux-uclibc-gcc  
> -Dperror=xperror -DCHECK_PORT  -DFACILITY=LOG_AUTH  
> -DIGNORE_SIGCHLD            -Os  
> -I/home/buildroot/build_arm/staging_dir/usr/include 
> -I/home/buildroot/build_arm/staging_dir/include 
> --sysroot=/home/buildroot/build_arm/staging_dir/ -isysroot 
> /home/buildroot/build_arm/staging_dir -mtune=arm9tdmi   -o portmap  
> /home/buildroot/build_arm/staging_dir/usr/lib/libc.a  portmap.o 
> pmap_check.o from_local.o get_myaddress.o  portmap.o: In function `main':
> portmap.c:(.text+0x914): undefined reference to `svcudp_create'
> portmap.c:(.text+0x9a0): undefined reference to `svctcp_create'
> portmap.c:(.text+0xa1c): undefined reference to `svc_run'
> collect2: ld returned 1 exit status
> make[1]: *** [portmap] Error 1
> make[1]: Leaving directory `/home/buildroot/build_arm/portmap_5beta'
> make: *** [/home/buildroot/build_arm/portmap_5beta/portmap] Error 2
>
>
>
>
>
>
> Make sure I'm pointing to the right libc.a:
> mike at himalia:/home/buildroot$ arm-linux-gcc  -print-file-name=libc.a
> /home/buildroot/build_arm/staging_dir/usr/lib/libc.a
>
>
>
>
>
> Using nm, I verified that libc.a does in fact contain 2 of the 3 
> unresolved external references.
> mike at himalia:/home/buildroot$ nm 
> /home/buildroot/build_arm/staging_dir/usr/lib/libc.a | grep svc_run
> svc_run.os:
> 00000028 T svc_run
> mike at himalia:/home/buildroot$ nm 
> /home/buildroot/build_arm/staging_dir/usr/lib/libc.a | grep svctcp_create
> 00000354 T svctcp_create
>
>
>
> Anyone have any ideas what is going on here?
>
> Thanks in advance.
>
> Mike
>
>
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
> Scanned with Copfilter Version 0.84beta3a (P3Scan 2.2.1)
> AntiSpam:  SpamAssassin 3.2.3
> by Markus Madlener @ http://www.copfilter.org
>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-05-24  3:07 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-23 21:51 [Buildroot] link error building portmap mike sander
2008-05-24  3:07 ` [Buildroot] link error building portmap.... possible solution Mike Sander

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox