diff --git a/configure b/configure
index 3ae70513a0b15b1a7ec792c71959ff4a407994f1..9e5329b92a52caf8f3cbe447f79cd097f8fa11bb 100755
--- a/configure
+++ b/configure
@@ -197,6 +197,7 @@ netserver="no"
 need_inet_aton="no"
 ffserver="yes"
 ffplay="yes"
+LIBOBJFLAGS=""
 LDFLAGS=-Wl,--warn-common
 FFSLDFLAGS=-Wl,-E
 LDCONFIG="ldconfig"
@@ -276,7 +277,7 @@ bktr="yes"
 audio_oss="yes"
 dv1394="no"
 make="gmake"
-CFLAGS="$CFLAGS \$(PIC)"
+LIBOBJFLAGS="\$(PIC)"
 LDFLAGS="$LDFLAGS -export-dynamic -pthread"
 LDCONFIG="ldconfig -m \$(libdir)"
 extralibs="$extralibs -lossaudio"
@@ -1103,6 +1104,16 @@ if test "$optimize" = "yes"; then
     fi
 fi
 
+# PIC flags for shared library objects where they are needed
+if test "$lshared" = "yes" ; then
+  # LIBOBJFLAGS may have already been set in the OS configuration
+  if test -z "$LIBOBJFLAGS" ; then
+    if test "$cpu" = "x86_64" ; then
+      LIBOBJFLAGS="\$(PIC)"
+    fi
+  fi
+fi
+
 if test x"$bindir" = x""; then
 bindir="${prefix}/bin"
 fi
@@ -1219,6 +1230,7 @@ echo "LDFLAGS=$LDFLAGS" >> config.mak
 echo "LDCONFIG=$LDCONFIG" >> config.mak
 echo "FFSLDFLAGS=$FFSLDFLAGS" >> config.mak
 echo "SHFLAGS=$SHFLAGS" >> config.mak
+echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
 echo "BUILDSUF=$BUILDSUF" >> config.mak
 echo "LIBPREF=$LIBPREF" >> config.mak
 echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 9e38eefdc9dab20ff077e35e9a6bc1b76875b2a9..d7c7227d1a1cdd8842521a21ad8da822ecf0fc64 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -409,10 +409,10 @@ libpostproc/libpostproc.a:
 	$(MAKE) -C libpostproc
 
 %.o: %.c
-	$(CC) $(CFLAGS) -c -o $@ $< 
+	$(CC) $(CFLAGS) $(LIBOBJFLAGS) -c -o $@ $< 
 
 %.o: %.S
-	$(CC) $(CFLAGS) -c -o $@ $<
+	$(CC) $(CFLAGS) $(LIBOBJFLAGS) -c -o $@ $<
 
 depend: $(SRCS)
 	$(CC) -MM $(CFLAGS) $^ 1>.depend
diff --git a/libavcodec/libpostproc/Makefile b/libavcodec/libpostproc/Makefile
index 0f4147896ca02f645c9f11d451fdcccfa6f49286..a12bc721e1f33123b7c92359355ac6c141319b79 100644
--- a/libavcodec/libpostproc/Makefile
+++ b/libavcodec/libpostproc/Makefile
@@ -21,7 +21,7 @@ CFLAGS  = $(OPTFLAGS) $(MLIB_INC) -I. -I.. $(EXTRA_INC)
 # .PHONY: all clean
 
 .c.o:
-	$(CC) -c $(CFLAGS) -I$(SRC_PATH)/libavcodec -I../.. -o $@ $<
+	$(CC) -c $(CFLAGS) $(LIBOBJFLAGS) -I$(SRC_PATH)/libavcodec -I../.. -o $@ $<
 
 all:    $(SWSLIB) $(PPLIB) $(SPPLIB)
 
diff --git a/libavformat/Makefile b/libavformat/Makefile
index c9a8af5ef26776e360b200fb116160b7bcaa3991..9f2a8f33adfd9a9abc95b9aebf1f118fb8b836f3 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -134,7 +134,7 @@ install-headers:
 	install -m 644 ../libavformat.pc $(libdir)/pkgconfig
 
 %.o: %.c
-	$(CC) $(CFLAGS) -c -o $@ $< 
+	$(CC) $(CFLAGS) $(LIBOBJFLAGS) -c -o $@ $< 
 
 # BeOS: remove -Wall to get rid of all the "multibyte constant" warnings
 %.o: %.cpp