Puppy Linux Discussion Forum Forum Index Puppy Linux Discussion Forum
Puppy HOME page : puppylinux.com
"THE" alternative forum : puppylinux.info
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

The time now is Tue 23 Sep 2014, 00:27
All times are UTC - 4
 Forum index » Off-Topic Area » Programming
libtool and the missing link
Post new topic   Reply to topic View previous topic :: View next topic
Page 1 of 1 [11 Posts]  
Author Message
goingnuts

Joined: 07 Dec 2008
Posts: 780

PostPosted: Wed 18 Jul 2012, 13:35    Post subject:  libtool and the missing link
Subject description: How to tell libtool to respect "-static"?
 

Some programs uses libtool when compiling and linking after you have done the ./configure.

As example I pass the following to build binutils:
Code:

LD="/usr/i386-linux-uclibc/bin/i386-uclibc-ld" CC="/usr/i386-linux-uclibc/bin/i386-uclibc-gcc -static"
CFLAGS="-pipe -Os -mtune=i386 -Wall -D_BSD_SOURCE -D_GNU_SOURCE" LDFLAGS="-static -Wl,--gc-sections,--sort-common,-s" ./configure --prefix=/usr/i386-linux-uclibc/usr --includedir=/usr/i386-linux-uclibc/usr/include --disable-nls --disable-shared --enable-static

...but no matter where I put the "-static" it never turns up in the final linking.

Below a part of the compiling process where the -"static" is present in the first block - but absolutely gone in the second part that actually creates the bin:

Code:

/bin/sh ./libtool --tag=CC --mode=link /usr/i386-linux-uclibc/bin/i386-uclibc-gcc -static -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror -pipe -Os -mtune=i386 -Wall -D_BSD_SOURCE -D_GNU_SOURCE  -static -Wl,--gc-sections,--sort-common,-s -L/usr/i386-linux-uclibc/usr/lib -o ar  arparse.o arlex.o ar.o not-ranlib.o arsup.o rename.o binemul.o emul_vanilla.o bucomm.o version.o filemode.o ../bfd/libbfd.la ../libiberty/libiberty.a -lfl  -lz -lm

libtool: link: /usr/i386-linux-uclibc/bin/i386-uclibc-gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror -pipe -Os -mtune=i386 -Wall -D_BSD_SOURCE -D_GNU_SOURCE -Wl,--gc-sections -Wl,--sort-common -Wl,-s -o ar arparse.o arlex.o ar.o not-ranlib.o arsup.o rename.o binemul.o emul_vanilla.o bucomm.o version.o filemode.o ../bfd/libbfd.la ../libiberty/libiberty.a -lfl  -lz -lm


By just adding the "-static" to the last command the bin is build static with no problems...Is there a magic flag to be set?

UPDATE: It always help to clear ones mind posting questions...At least for binutils it works if "-Xcompiler -static" is included in LDFLAGS. I will test some other sources were I have the same problem: It works with conky-1.3.0, not with libiconv-1.6.1...
Back to top
View user's profile Send private message Visit poster's website 
John Doe

Joined: 01 Aug 2005
Posts: 1689
Location: Michigan, US

PostPosted: Wed 18 Jul 2012, 22:47    Post subject:  

I think you are after the following:

Code:
export LDFLAGS+="-static"
Back to top
View user's profile Send private message 
John Doe

Joined: 01 Aug 2005
Posts: 1689
Location: Michigan, US

PostPosted: Thu 19 Jul 2012, 00:42    Post subject:  

p.s. might be best to stay away from libiconv. I've messed up my system with that before. As best I remember, puppy likes the version that glibc installs.
Back to top
View user's profile Send private message 
technosaurus


Joined: 18 May 2008
Posts: 4351

PostPosted: Sat 21 Jul 2012, 12:50    Post subject:  

In my musl static tool chain I wrote a wrapper that use a for arg in $@ case... to look through $@ for -l* and grokked in my link time options there (also replaced -O[0-3] with -Os and added my goodies in ... saved me from a ton of CLI simulated 3rd button click frustration) - just named it gcc after mving gcc to gcc-real

Not at home right now, here is a link to my old one
http://www.murga-linux.com/puppy/viewtopic.php?p=588232&#588232

_________________
Web Programming - Pet Packaging 100 & 101
Back to top
View user's profile Send private message 
goingnuts

Joined: 07 Dec 2008
Posts: 780

PostPosted: Wed 26 Feb 2014, 02:19    Post subject:  

Another way to fight stupid libtool when refusing to link static - Run
Code:
find . -name "ltmain.sh" -print | xargs sed -i 's/-all-static)/-all-static|-static)/g'
before ./configure.
Back to top
View user's profile Send private message Visit poster's website 
amigo

Joined: 02 Apr 2007
Posts: 2247

PostPosted: Wed 26 Feb 2014, 15:31    Post subject:  

./configure --all-static ... is what you need for binutils. But, yes libtool can be a bitch to get doing what you want...
Back to top
View user's profile Send private message 
Karl Godt


Joined: 20 Jun 2010
Posts: 3972
Location: Kiel,Germany

PostPosted: Sat 01 Mar 2014, 05:41    Post subject:  

If using unpatched source there is a chance that 10-50% of the source Makefile[.ini|.am] have some bugs
that result in gcc lines missing some $(LDFLAGS) variable .

Using outside shared libraries may also result in missing $(SOME_LIB_A_LDFLAGS) variables additionally in some Makefile .

Since many Source Code tarballs use several subdirectories with each it's own Makefile, you'll probably need to check each subdirectory' Makefile .
Back to top
View user's profile Send private message Visit poster's website 
goingnuts

Joined: 07 Dec 2008
Posts: 780

PostPosted: Sat 01 Mar 2014, 16:04    Post subject:  

I am not sure all gcc-version accepts the "--all-static".

I use
Code:
find . -name "Makefile" -print | xargs sed -i 's/prefix = \/usr\/local/prefix = \/usr/g'
after runnig ./configure to address the various missing settings.
Back to top
View user's profile Send private message Visit poster's website 
Karl Godt


Joined: 20 Jun 2010
Posts: 3972
Location: Kiel,Germany

PostPosted: Mon 03 Mar 2014, 03:45    Post subject:  

No, --all-static is rejected by cc1 gcc --version 4.2.2

Just did a compile of bc-1.06.95 source as

Code:
./configure CFLAGS='--static' 
:

bash-3.2# file /root/Downloads/COMPILE/bc-1.06.95/bc/bc
/root/Downloads/COMPILE/bc-1.06.95/bc/bc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.0.0,
statically linked, not stripped
bash-3.2# ls -s !$
ls -s /root/Downloads/COMPILE/bc-1.06.95/bc/bc
600 /root/Downloads/COMPILE/bc-1.06.95/bc/bc*


bc is rarely used --
Makefile seems ok to pass --static parameter.
Back to top
View user's profile Send private message Visit poster's website 
amigo

Joined: 02 Apr 2007
Posts: 2247

PostPosted: Mon 03 Mar 2014, 03:54    Post subject:  

--all-static is an option to the configure script for binutils -not a gcc option -or more accurately an option to the linker (ld).
Back to top
View user's profile Send private message 
Karl Godt


Joined: 20 Jun 2010
Posts: 3972
Location: Kiel,Germany

PostPosted: Mon 03 Mar 2014, 10:01    Post subject:  

GLIBC source is also such a candidate, that needs investigation about some parameters and Makefile to compile.

If these main core programs would be an easy task, not many Distros would build onto other Distro's efforts to create the basic environment.

_________________
«Give me GUI or Death» -- I give you [[Xx]term[inal]] [[Cc]on[s][ole]] .
Macpup user since 2010 on full installations.
People who want problems with Puppy boot frugal Razz
Back to top
View user's profile Send private message Visit poster's website 
Display posts from previous:   Sort by:   
Page 1 of 1 [11 Posts]  
Post new topic   Reply to topic View previous topic :: View next topic
 Forum index » Off-Topic Area » Programming
Jump to:  

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group
[ Time: 0.0670s ][ Queries: 12 (0.0043s) ][ GZIP on ]