I wanted to build an awesome place for people to discuss module specific issues, but I don't have any more time for this, and there are much better places to discuss Perl-related issues. I'd recommend asking your question on Stack Overflow or on Perl Monks.
If you are looking for a Perl tutorial or Perl-related news, I hope these links will serve you well.
Posted on 2012-01-04 22:39:41.870354-08 by clanmills
Linking Imager and libjpeg on MacOS-X Lion

Good news: I have 2 solutions, so I'm not asking anybody to do any work! I hope this might somebody else - or another reader may wish to share another solution.


////// The Issue //////

The MakeMaker tool (perl Makefile.PL; make ; sudo make install) wants to build a "universal" binary (compiled for i386 and x86_64). However, libjpeg-7 wouldn't build as a universal - so we get linker errors. I think (although I'm not certain), that MakeMaker "learns" its archflags from the file /System/Library/Perl/5.12/darwin-thread-multi-2level/Config_heavy.pl


////// My Environment //////

I keep the Imager-0.87 and jpeg-7 in the ~/gnu directory (however the name of the directory is of no significance)

644 rmills@rmills-mbp:~/gnu $ dir | egrep -e Imager -e jpeg drwxr-xr-x@ 118 rmills staff 3.9K Jan 4 21:44 Imager-0.87/ drwxr-xr-x@ 304 rmills staff 10K Jan 4 19:56 jpeg-7/ (I can't remember from where I downloaded this) 645 rmills@rmills-mbp:~/gnu $

////// SOLUTION 1 //////(which took longer to find)
step a) build jpeg-7 (default = x86_64) $ cd ~/gnu/jpeg-7 $ make clean $ ./configure $ make $ sudo make install step b) build Imager (however tell him to only build x86_64) $ cd ~/gnu/Imager-0.87/ $ env "ARCHFLAGS=-arch x86_64" perl Makefile.PL ... Libraries found: FT2 GIF JPEG PNG TIFF Libraries *not* found: T1 Win32 $ make $ sudo make install
////// SOLUTION 2 ////// (more complicated and what I thought of first)

build libjpeg.7.dylib for i386 and x86_64 separately and use lipo to combine them.

step a) build "universal libjpeg.7.dylib $ cd ~/gnu/Imager-0.87/ $ make clean $ ./configure CC=gcc "CFLAGS=-arch i386" --enable-shared $ make ; cp ./.libs/libjpeg.7.dylib libjpeg.7.dylib.i386 $ make clean $ ./configure CC=gcc "CFLAGS=-arch x86_64" --enable-shared $ make $ cp ./.libs/libjpeg.7.dylib libjpeg.7.dylib.x86_64 $ sudo make install $ sudo rm ./.libs/libjpeg.7.dylib $ lipo -arch i386 libjpeg.7.dylib.i386 -arch x86_64 libjpeg.7.dylib.x86_64 -create -output libjpeg. +7.dylib $ sudo cp libjpeg.7.dylib /usr/local/lib $ ls -alt *jpeg* | grep dylib -rwxr-xr-x 1 rmills staff 659224 Jan 4 19:56 libjpeg.7.dylib -rwxr-xr-x 1 rmills staff 376600 Jan 4 19:55 libjpeg.7.dylib.x86_64 -rwxr-xr-x 1 rmills staff 276748 Jan 4 19:54 libjpeg.7.dylib.i386 step b) build Imager $ cd ~/gnu/Imager-0.87 $ make clean $ perl Makefile.PL ... Libraries found: JPEG Libraries *not* found: FT2 GIF PNG T1 TIFF Win32 $ make $ sudo make install
Direct Responses: 13589 | 13591 | Write a response
Posted on 2012-01-04 23:45:59.100916-08 by tonyc in response to 13588
Re: Linking Imager and libjpeg on MacOS-X Lion

A simpler solution is to supply the CFLAGS to configure:


./configure --disable-dependency-tracking CFLAGS='-arch x86_64 -arch i386 -arch ppc'

when building libjpeg.


I only recently worked this out, solving the same issue for https://rt.cpan.org/Ticket/Display.html?id=73371

Direct Responses: Write a response
Posted on 2012-01-05 07:33:35.615887-08 by clanmills in response to 13588
Re: Linking Imager and libjpeg on MacOS-X Lion

I received the following very helpful email from Tony. Indeed this works well on Lion.

This is what I used on Snow Leopard:

./configure --disable-dependency-tracking CFLAGS='-arch x86_64 -arch i386 -arch ppc'

Since Lion doesn't support ppc, you can skip that safely there:

./configure --disable-dependency-tracking CFLAGS='-arch x86_64 -arch i386'

I only solved this recently, solving

https://rt.cpan.org/Ticket/Display.html?id=73371
Direct Responses: Write a response