Install GD for PHP on Mac OS X 10.5 Leopard


So, you need GD for your killer PHP web app, and you’re running Mac OS X 10.5? A quick look shows that GD doesn’t ship with Leopard. No worries. It’s pretty simple to install.

There are a few core requirements you must take care of before getting started. Choose to ignore these, and you’re doomed to failure!

  1. Always back up your system before a command-line activity such as this.
  2. Update your system to Mac OS 10.5.5. I could detail how to do this with prior versions, but I don’t have time.
  3. Install the latest version of Apple’s Developer Tools: XCode 3.0+ for 10.5. XCode is available on your OS X DVD, or from Apple as a free download.
  4. X11 must be installed (it is by default), as well as X11 SDK (from the Developer Tools in step 3).
DISCLAIMER: The author claims no responsibility for any damage that may occur from the use of any information found here or found on links followed from this document. If you choose to use this information, you do so at your own risk.

Get Started

To begin, open Terminal (Macintosh HD -> Applications -> Utilities ->Terminal) and invoke the superuser do command. You will need to enter your administrator password. Careful - you can now utterly destroy your machine:

sudo bash

You will need to enter your administrator password.

Install libjpeg

The free image compression library, libjpeg, is required by GD.

First, let’s create a directory for storing the source files we’ll be downloading:

mkdir -p /SourceCache

cd /SourceCache

Download the source file and unpack it:

curl -O http://www.ijg.org/files/jpegsrc.v6b.tar.gz

tar xzpf jpegsrc.v6b.tar.gz

cd /SourceCache/jpeg-6b

cp /usr/share/libtool/config.sub .

cp /usr/share/libtool/config.guess .

Mac OS X Leopard comes in two flavors, depending on the capabilities of your CPU — 32-bit or 64-bit. YOU MUST COMPILE FOR THE PROPER ARCHITECTURE.

Which architecture do you have? Easy. Click the Apple Menu, select “About This Mac”. If the screen says Core Duo, you’re 32-bit. Anything else, and you’re running 64-bit. My MacBook Pro is running 64-bit because of the Core 2 Duo:

The Core 2 Duo is a 64-bit CPU

For 32-bit only, use the following command:

./configure --enable-shared

64-bit architecture uses this command instead:

MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure --enable-shared

Continue on for both architectures:

make clean

make

mkdir -p /usr/local/include

mkdir -p /usr/local/bin

mkdir -p /usr/local/lib

mkdir -p /usr/local/man/man1

make install

You now have compiled libjpeg!

Download and compile the GD graphics library extension (gd.so)

We will be using Apple’s Darwin sources for PHP, which interestingly contain the GD source code. Why Apple doesn’t ship with gd.so already compiled is known only to the maker.

mkdir -p /SourceCache

cd /SourceCache

curl -O http://www.opensource.apple.com/darwinsource/10.5.5/apache_mod_php-44.1/php-5.2.6.tar.bz2

tar xjf php-5.2.6.tar.bz2

cd /SourceCache/php-5.2.6/ext/gd

phpize

Again: YOU MUST COMPILE FOR THE PROPER ARCHITECTURE.

For 32-bit use:

./configure --with-zlib-dir=/usr --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/X11R6 --with-freetype-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6

For 64-bit use:

MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure --with-zlib-dir=/usr --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/X11R6 --with-freetype-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6

NOTE: Check the output of the last command. If you get an error similar to this –”/usr/X11/lib/libpng.3.0.0.dylib: No such file or directory” — you should create a symbolic link with a name matching the file referred to in the error message. For example, the above error indicates that no libpng.3.0.0.dylib file exists. Simply create a link named libpng.3.0.0.dylib pointing to libpng.3.dylib:  

sudo ln -s /usr/X11/lib/libpng.3.dylib /usr/X11/lib/libpng.3.0.0.dylib

Likewise, if your error refers to libpng12.0.##.#, you should create a symbolic link to libpng12.0.dylib.

Then, recompile GD.

 

Continue on for both architectures:

make clean

make

make install

Add gd.so to PHP

PHP needs to be configured to load the gd.so shared object extension that you just compiled. If you’ve previously created a /etc/php.ini file, simply edit it and add:

extension=gd.so

If you haven’t created a /etc/php.ini file, simply issue the following command to create the file and add the instruction:

echo -e extension=gd.so > /etc/php.ini

If you have previously created a /etc/php.ini file, make sure the  extension_dir= directive is commented out (by putting a semi-colon in front of it) or is pointing to /usr/lib/php/extensions/no-debug-non-zts-20060613.

Restart Apache to force the reloading of the PHP configuration file.

apachectl graceful

Confirm that PHP is loading the gd.so extension by running the following command, and looking for the line “GD Support => enabled” in the resulting output:

/usr/bin/php -i|grep -i gd

Alternatively, you can create a file called phpinfo.php in your web server document directory (/Library/WebServer/Documents/) with the following contents:

<?php
phpinfo();
?>

Point your web browser to http://localhost/phpinfo.php, and you should see a GD block verifying installation, as shown below:

GD info block as it appears via phpinfo();

About this Piece O' Garbage

Join the fray by contributing trash, feeding on other people's trash, or linking to it from your dump.


Other Garbage Nearby
Debugging web sites in Safari
Set up Screen Sharing (VNC) via command line on Mac OS X remotely using SSH

Talk Some Trash

Take a moment to submit some trash to this garbage pile. Some basic HTML is allowed for formatting.

Reader Trash in this Garbage Pile

Hi. Thanks for this tutorial, is exactly what I was searching for…

I have an error when inserting the 64-bit large command, after the “phpize”.

The error is this one:
“checking for jpeg_read_header in -ljpeg… no”
“configure: error: Problem with libjpeg.(a|so). Please check config.log for more information.”

Do you know which can be the problem?

Thank you in advance!

@Andreu: Go back and delete the /SourceCache/jpeg-6b/ directory, and redo your libjpeg installation. Something’s wrong there, which is causing the error you’re getting. Keep in mind you *must* compile both libjpeg and GD for the correct architecture: 64-bit or 32-bit.

Excellent write-up, thanks for sharing it!

The only wrinkle I ran into was the following error building the GD extension:

“i686-apple-darwin9-gcc-4.0.1: /usr/X11/lib/libpng.3.0.0.dylib: No such file or directory”

This is similar to the possible error you noted above, but for some reason, all I had in /usr/X11/lib were libpng12.0.26.0.dylib and libpng.3.26.0.dylib. There was no libpng12.0.24.0.dylib. Moreover, library_names in libpng.la referred to libpng.3.0.0.dylib, which didn’t even exist. However, libpng.3.26.0.dylib *did* exist, so I edited the linpng.la file to match, and GD finished building successfully.

libpng12.0.26.0.dylib also existed, but all things being equal, libpng.3.26.0.dylib seemed like the better choice (ie, what libpng.la may have actually intended).

I redo the installation of libjpeg and I have the same error than before. Any idea?

[...] Tuesday, October 28th, 2008 | Uncategorized | klalex Found a great article how to do this - Install GD for PHP on Mac OS X 10.5 Leopard. Thanks, Chris! Tags: Mac OS, [...]

All going fine until the last make command.
Getting the below errors also the files do exist in that location. Can I delete some directories to start over?
Also getting lipo: can’t figure out the architecture type… used the 64 bit since my about does say Core 2 Duo
Any ideas?
Cap

i686-apple-darwin9-gcc-4.0.1: powerpc-apple-darwin9-gcc-4.0.1: /usr/X11/lib/libpng.3.0.0.dylib: No such file or directory
/usr/X11/lib/libpng.3.0.0.dylib: No such file or directory
powerpc-apple-darwin9-gcc-4.0.1: /usr/X11/lib/libpng.3.0.0.dylib: No such file or directory
i686-apple-darwin9-gcc-4.0.1: /usr/X11/lib/libpng.3.0.0.dylib: No such file or directory
lipo: can’t figure out the architecture type of: /var/tmp//ccarkbQX.out

@Jeff: Curious. All the libpng.3.x.x.dylib files point to the same library. It’s not clear what updates or apps install the variously named versions of libpng. What version of OS 10.5 did you start with? I started with 10.5, and have installed each update through 10.5.5. A directory listing of /usr/X11/lib/ shows these version 3 files:

mbpro:usr cbrewer$ ls -al /usr/X11/lib/libpng.3*
/usr/X11/lib/libpng.3.0.0.dylib -> libpng.3.dylib
/usr/X11/lib/libpng.3.24.0.dylib -> libpng.3.dylib
/usr/X11/lib/libpng.3.26.0.dylib -> libpng.3.dylib
/usr/X11/lib/libpng.3.dylib

@CapRoberts: Are you sure that you have X11 SDK installed? You *must* have that installed. It is on the 10.5 installer DVD as part of the developer tools. Or you can download the developer tools from Apple for free.

What output do you get when entering the following:

lipo -info /Developer/SDKs/MacOSX10.5.sdk/usr/X11/lib/libpng.3.dylib

You should get:
Architectures in the fat file: /Developer/SDKs/MacOSX10.5.sdk/usr/X11/lib/libpng.3.dylib are: ppc7400 ppc64 i386 x86_64

You can safely delete the /SourceCache/jpeg-6b and /SourceCache/php-5.2.6/ directories and start over.

Hello Thanks for answering my question
I started out with OSX 10.5.5 but tried another install before this one I found on another site but that did not mention 32/64 bit differences and failed with the libpng12.0.24.0.dylib error.

I de and re installed the developer tools and X11

When entering: lipo -info /Developer/SDKs/MacOSX10.5.sdk/usr/X11/lib/libpng.3.dylib

I do get: Architectures in the fat file: /Developer/SDKs/MacOSX10.5.sdk/usr/X11/lib/libpng.3.dylib are: ppc7400 ppc64 i386 x86_64

Thank you so much for this great tutorial, everything worked unbelievably well.

Thanks for this great guide. I had the same issue as Jeff (comment 3), with X11 SDK installed, and got the same error. I started with OSX 10.5.4, updated to 10.5.5:

ls -al /usr/X11/lib/libpng.3*
/usr/X11/lib/libpng.3.24.0.dylib -> libpng.3.dylib
/usr/X11/lib/libpng.3.26.0.dylib -> libpng.3.dylib
/usr/X11/lib/libpng.3.dylib

@All with errors relating to libpng.3.0.0.dylib. I’ve updated the above instructions with a solution to the problem you’re reporting. I believe it to be the most elegant fix. Please let me and my readers know if it works out as such for you.

Try creating a link in /usr/X11/lib/ to the libpng.3.dylib file:

sudo ln -s /usr/X11/lib/libpng.3.dylib /usr/X11/lib/libpng.3.0.0.dylib

Then try compiling GD again.

That’s an elegant, functional solution. Thanks again.

Excellent! Worked without a hitch.
Thank you!

Thank you so much for this walkthrough, very, very good - THANKS!

Thank you so much for this. I tried another one I found online and got an error because it didnt account for the 32 vs 64 bit difference.

I know next to nothing about Terminal commands and just copied and pasted and thankfully it worked perfectly. You rock!

sudo ln -s /usr/X11/lib/libpng.3.dylib /usr/X11/lib/libpng.3.0.0.dylib

Thanks for the solution. Everything worked and the overall result is much better and faster then the entropy beta solution I was using in the mean time.

I have a very similar problem to Andreu from the 1st comment:

“configure: error: libjpeg.(a|so) not found.”

Please advise…

@Bob: See comment 2 onward. Follow step by step and it works.

Thank you! I did all this on Tiger a few years ago. Either I did it wrong back then or it was simply harder back then.

This was very easy thanks to your tutorial.

Hi Chris,

Great article. Thanks a lot for the time to write it and for the follow-up support to reader posts.

Rob

I’m getting this error when trying to do the 64 bit thing for libjpg:

checking whether the C compiler (gcc -arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp -arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load) works… no
configure: error: installation or configuration problem: C compiler cannot create executables.

I tried installing, and reinstalling xcode… any ideas?

I followed all the procedure, when i type
/usr/bin/php -i|grep -i gd
it show GD enabled but in phpinfo GD is not shown.

After several tests I added –with-gd to the configure command and it worked. Is it possible that you missed it? I don’t think so, so… what’s happened?

Francesco

I was having the same problem posted by Andreu in comment #1, despite carefully following all the steps. I think because my machine shipped with Leopard, perhaps I didn’t have some file hanging around this whole procedure expected. In any case, I found this post to allow libjpeg to be built and thus bypass the problem.

Thank you! I have been trying to get this working for the past day or so and your tutorial was exactly what I needed.

@Andreu and others with similar difficulties.

I installed the X11 SDK more times than I could count. Then I realized there was no X11.app in /Applications/Utilities/

I popped in the Leopard Installation DVD, opened up ‘Optional Installs.mpkg’ in the ‘Optional Installs’ Folder and installed X11. It would seem it is not installed by default.

Afterwards, I restarted this handy guide (thanks Chris) and everything worked fine.

Works great. Thank you!

Thanks! Worked great!