http://qs321.pair.com?node_id=934619

metaperl has asked for the wisdom of the Perl Monks concerning the following question:

`perl Build.PL` complains that libcc_s.a is not found, however it is on my `LD_LIBRARY_PATH` ... what can I do to get ExtUtils::CBuilder to find it?

li2-168:~/.cpan/build/Crypt-Eksblowfish-0.009-kzs2xR# apt-file search gcc_s.a
gcc-mingw-w64: /usr/lib/gcc/i686-w64-mingw32/4.6/libgcc_s.a
gcc-mingw-w64: /usr/lib/gcc/x86_64-w64-mingw32/4.6/libgcc_s.a
li2-168:~/.cpan/build/Crypt-Eksblowfish-0.009-kzs2xR# echo $LD_LIBRARY_PATH
:/usr/lib/gcc/i686-w64-mingw32/4.6:/usr/lib/gcc/x86_64-w64-mingw32/4.6
li2-168:~/.cpan/build/Crypt-Eksblowfish-0.009-kzs2xR# perl Build.PL
/usr/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status
/usr/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status
Warning: ExtUtils::CBuilder not installed or no compiler detected
Proceeding with configuration, but compilation may fail during Build

Creating new 'MYMETA.yml' with configuration results
Creating new 'Build' script for 'Crypt-Eksblowfish' version '0.009'
li2-168:~/.cpan/build/Crypt-Eksblowfish-0.009-kzs2xR#






The mantra of every experienced web application developer is the same: thou shalt separate business logic from display. Ironically, almost all template engines allow violation of this separation principle, which is the very impetus for HTML template engine development.

-- Terence Parr, "Enforcing Strict Model View Separation in Template Engines"

Replies are listed 'Best First'.
Re: How to satisfy ExtUtils::CBuilder?
by Anonymous Monk on Oct 29, 2011 at 22:39 UTC

    complains that libcc_s.a is not found, however it is on my `LD_LIBRARY_PATH`

    I don't think ld cares about LD_LIBRARY_PATH at compile-time, but I also think LD_LIBRARY_PATH is for dynamic libraries (.so) not static ones (.a)

    The real problem is, why your compiler toolchain doesn't know where to find libcc_s.a, which is part of your compiler toolchain.

    For example

    $ g++ -print-search-dirs install: c:\mingw\bin\../lib/gcc/mingw32/4.5.2/ programs: =c:/mingw/bin/../libexec/gcc/mingw32/4.5.2/;c:/mingw/bin/../ +libexec/gcc/;c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw3 +2/bin/mingw32/4.5.2/;c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../. +./mingw32/bin/ libraries: =c:/mingw/bin/../lib/gcc/mingw32/4.5.2/;c:/mingw/bin/../lib +/gcc/;c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/lib/m +ingw32/4.5.2/;c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw +32/lib/;c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../mingw32/4.5.2/ +;c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../;/mingw/lib/mingw32/4 +.5.2/;/mingw/lib/

    g++ knows where to find libgcc_s.a

    c:/mingw/bin/../lib/gcc/mingw32/4.5.2/
    C:\MinGW\lib\gcc\mingw32\4.5.2\libgcc_s.a
    

    I don't know where ld keeps such a dir list, but IIRC, it responds to export LDFLAGS= -L/path/to/where/libcc_s/resides

    In any case, I doubt this is a perl specific problem, or ExtUtils::CBuilder problem

    $ perl -V:ldflags ldflags='-s -L"c:\perl\5.14.1\lib\MSWin32-x86-multi-thread\CORE" -L"C: +\MinGW\lib"';
Re: How to satisfy ExtUtils::CBuilder?
by Khen1950fx (Canon) on Oct 29, 2011 at 21:27 UTC
        No. It's necessary.