← Back to team overview

kicad-developers team mailing list archive

Re: Re: libstdc++

 

jean-pierre.charras@... wrote:


Dick Hollenbeck a écrit :


But I insist that my two options are still valid, and wonder if
statically linking in libstdc++ will add 2 MB, since this is a "link
only what's needed" form of link.

libstdc++ (and libsupc++ that is sometimes needed) was for me *always* a nightmare since I build Kicad distributions. Depending on linux versions and/or gcc versions, statically linking works or not (many times, a lot of undefined symbols are found).
My opinion is libstdc++ (and libsupc++) static versions are often broken.
I'll work on that next days.

In fact, I planned to build a Kicad version under Cento4.8 (and perhaps a Debian version)
I am using these Linux distributions at work.
At home, I use only the Ubuntu 9.10 version.
But I had the hands full with bug fixing (Some not critical but annoying bugs where found in final release). This is because a lot of guys (as you know!) do not try to test the RC versions and just where waiting for the stable version. So I'll make a bug fix release soon, and after I hope I can build these (final?) versions.
I do not want do the same work twice.

$ readelf -a kicad

gives:

:

Dynamic section at offset 0xc9d90 contains 32 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libwx_gtk2u_gl-2.8.so.0] 0x0000000000000001 (NEEDED) Shared library: [libwx_gtk2u_aui-2.8.so.0] 0x0000000000000001 (NEEDED) Shared library: [libwx_gtk2u_adv-2.8.so.0] 0x0000000000000001 (NEEDED) Shared library: [libwx_gtk2u_html-2.8.so.0] 0x0000000000000001 (NEEDED) Shared library: [libwx_gtk2u_core-2.8.so.0] 0x0000000000000001 (NEEDED) Shared library: [libwx_baseu_net-2.8.so.0] 0x0000000000000001 (NEEDED) Shared library: [libwx_baseu-2.8.so.0]
0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]

:


So on my Ubuntu system, we can see that libstdc++.so.6 is needed, and is presumed to be the problem dso, for customers of your Ubuntu binaries.


Just distributing the libstdc++.so from your Ubuntu, placing it in a fixed directory (such as where you place the binaries), and making the CMake install command put a LD_LIBRARY_PATH statement in there, pointing to this directory, (e.g. /usr/local/bin ) should fix the problem for 95% of all contemporary 32 bit distros.


The invocation command line would then look like this:


$ LD_LIBRARY_PATH=/usr/local/bin kicad


Thereafter, I believe and child processes, pcbnew, eeschema, etc, will inherit the same environment as their parent (kicad program), and get the LD_LIBRARY_PATH setting.

If you can simply set this environment variable in the desktop shortcuts, then I cannot think of an easier solution. Otherwise, there may need to be an intermediate invoking shell script that does the same thing, such as a shell script that has that single line in it. The shortcuts could then call than launching script.


Take the path of least resistance if you can, most of nature does the same thing: electrons, water, and me.


Dick



--
Jean-Pierre CHARRAS

Maître de conférences
Directeur d'études 2ieme année.
Génie Electrique et Informatique Industrielle 2
Institut Universitaire de Technologie 1 de Grenoble
BP 67, 38402 St Martin d'Heres Cedex

Recherche :
GIPSA-LAB - INPG
Rue de la Houille Blanche
38400 Saint Martin d'Heres











Follow ups

References