November 1, 2008
GCC and Environment Variables
These are images that get booted 100s of times a day and might only stick around active for 15 minutes or so, therefore speed of boot up and bootstrapping is important. Furthermore, when I decide to upgrade the binaries that this image is using, I don't necessarily want to have to create a new image.
I set out to compile both git and ffmpeg (with a number of libraries) using a custom prefix configuration option to keep all the build artifacts separate and clean from the rest of the system so I could easily make a binary package.
However, I ran into problems where the compile process for ffmpeg was looking for some headers and libraries of dependent projects that were compiled and installed earlier in the day using the same custom prefix.
For the life of me I couldn't figure out how to control the build process to
see the non-standard directory paths on the build to reference the header and
library files it was looking for. I toyed with the idea of just symlinking
/usr/local/lib, but that seemed wrong
(not to mention tedious).
C_INCLUDE_PATH=/mnt/ffmpeg/include CPLUS_INCLUDE_PATH=/mnt/ffmpeg/include LIBRARY_PATH=/mnt/ffmpeg/lib
By setting these environment variables to my custom path, everything configured and compiled and installed cleanly and properly.
Now I can simply
tar zcf ffmpeg.tar.gz /mnt/ffmpeg.
Note: A number of folks (Brian Rosner, James Tauber, Eric Holscher, Eric Florenzano, Greg Newman, and Justin Lilly ) are making an attempt to write a blog post for each day of November. While I do like a good challenge and this is certainly one of them, I will only commit to it one day at a time. :)