The par2cmdline0.4 compile failure is because the g++ compiler has become more compliant and requires a template <> modifier for functions defined external to the definition.  This is just my understanding, I am not a C++ expert.  See this link
http://www.codecomments.com/archive324-2005-12-730847.html 
Here is a diff file that if you cut and paste into a file called fix.diff in the par2cmdline-0.4/ directory and then run patch < fix.diff in the par2cmdline-0.4 directory will fix the problem with reedsolomon.cpp.  It does not fix the pack warnings, though they seem to be ignored and don't affect the executable.

--- ../par2cmdline-0.4/reedsolomon.cpp    2003-05-26 11:01:31.000000000 -0700
+++ reedsolomon.cpp    2008-12-02 16:28:46.969415660 -0700
@@ -50,7 +50,8 @@ u32 gcd(u32 a, u32 b)
     return 0;
   }
}
-

+template <>
bool ReedSolomon<Galois8>::SetInput(const vector<bool> &present)
{
   inputcount = (u32)present.size();
@@ -80,6 +81,7 @@ bool ReedSolomon<Galois8>::SetInput(cons
   return true;
}

+template <>
bool ReedSolomon<Galois8>::SetInput(u32 count)
{
   inputcount = count;
@@ -101,6 +103,7 @@ bool ReedSolomon<Galois8>::SetInput(u32
   return true;
}

+template <>
bool ReedSolomon<Galois8>::Process(size_t size, u32 inputindex, const void *inputbuffer, u32 outputindex, void *outputbuffer)
{
   // Look up the appropriate element in the RS matrix
@@ -189,6 +192,7 @@ bool ReedSolomon<Galois8>::Process(size_

// Set which of the source files are present and which are missing
// and compute the base values to use for the vandermonde matrix.
+template <>
bool ReedSolomon<Galois16>::SetInput(const vector<bool> &present)
{
   inputcount = (u32)present.size();
@@ -233,6 +237,7 @@ bool ReedSolomon<Galois16>::SetInput(con

// Record that the specified number of source files are all present
// and compute the base values to use for the vandermonde matrix.
+template <>
bool ReedSolomon<Galois16>::SetInput(u32 count)
{
   inputcount = count;
@@ -267,6 +272,7 @@ bool ReedSolomon<Galois16>::SetInput(u32
   return true;
}

+template <>
bool ReedSolomon<Galois16>::Process(size_t size, u32 inputindex, const void *inputbuffer, u32 outputindex, void *outputbuffer)
{
   // Look up the appropriate element in the RS matrix