diff --git a/Makefile b/Makefile
index 95fa31d0a7cae2eb171ce3e36f160ad883632652..db78217cc1ea5490451b682b5a9ad1d1f34be6c4 100644
--- a/Makefile
+++ b/Makefile
@@ -69,7 +69,7 @@ ffmpeg$(EXE): ffmpeg_g$(EXE)
 ffserver$(EXE): ffserver.o $(DEP_LIBS)
 	$(CC) $(LDFLAGS) $(FFSLDFLAGS) \
 		-o $@ ffserver.o -L./libavcodec -L./libavformat \
-              -lavformat -lavcodec -ldl $(EXTRALIBS) 
+              -lavformat -lavcodec $(EXTRALIBS) 
 
 ffplay: ffmpeg$(EXE)
 	ln -sf $< $@
@@ -120,7 +120,7 @@ TAGS:
 # regression tests
 
 libavtest test mpeg4 mpeg: ffmpeg$(EXE)
-	make -C tests $@
+	$(MAKE) -C tests $@
 
 ifneq ($(wildcard .depend),)
 include .depend
diff --git a/configure b/configure
index f962eb51bca988b9f31ff678225a5fc9aa77f649..cf38fb7acd41dca82153cb660316df81523db770 100755
--- a/configure
+++ b/configure
@@ -100,6 +100,12 @@ else
 netserver="yes"
 extralibs="-lnet"
 fi ;;
+FreeBSD)
+v4l="no"
+audio_oss="yes"
+make="gmake"
+LDFLAGS="-export-dynamic"
+;;
 BSD/OS)
 v4l="no"
 audio_oss="yes"
@@ -148,10 +154,17 @@ cat > $TMPC << EOF
 int main( void ) { return (int) dlopen("foo", 0); }
 EOF
 
+ldl=-ldl
+
 if $cc -o $TMPO $TMPC -ldl 2> /dev/null  ; then
 vhook=yes
 fi
 
+if $cc -o $TMPO $TMPC 2> /dev/null  ; then
+vhook=yes
+ldl=""
+fi
+
 cat > $TMPC << EOF
 #include <X11/Xlib.h>
 #include <Imlib2.h>
@@ -201,7 +214,7 @@ for opt do
   ;;
   --disable-a52) a52="no"
   ;;
-  --enable-a52bin) a52bin="yes" ; extralibs="-ldl $extralibs"
+  --enable-a52bin) a52bin="yes" ; extralibs="$ldl $extralibs"
   ;;
   --enable-mp3lame) mp3lame="yes"
   ;;
@@ -475,7 +488,6 @@ echo "STRIP=$strip" >> config.mak
 echo "OPTFLAGS=$CFLAGS" >> config.mak
 echo "LDFLAGS=$LDFLAGS" >> config.mak
 echo "SHFLAGS=$SHFLAGS" >> config.mak
-echo "LDFLAGS=$LDFLAGS" >> config.mak
 if test "$cpu" = "x86" ; then
   echo "TARGET_ARCH_X86=yes" >> config.mak
   echo "#define ARCH_X86 1" >> $TMPH
@@ -529,7 +541,7 @@ fi
 if test "$vhook" = "yes" ; then
   echo "BUILD_VHOOK=yes" >> config.mak
   echo "#define HAVE_VHOOK 1" >> $TMPH
-  extralibs="$extralibs -ldl"
+  extralibs="$extralibs $ldl"
 fi
 if test "$lshared" = "yes" ; then
   echo "BUILD_SHARED=yes" >> config.mak
diff --git a/ffserver.c b/ffserver.c
index 8a55af9b17903946d85270d02e8e7e83acfd68bc..1be33ebcef0fc497ec18e38e30c40f59e87105a5 100644
--- a/ffserver.c
+++ b/ffserver.c
@@ -20,7 +20,6 @@
 #include "avformat.h"
 
 #include <stdarg.h>
-#include <netinet/in.h>
 #include <unistd.h>
 #include <fcntl.h>
 #include <sys/ioctl.h>
@@ -31,6 +30,7 @@
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/wait.h>
+#include <netinet/in.h>
 #include <arpa/inet.h>
 #include <netdb.h>
 #include <ctype.h>