diff --git a/Makefile.in b/Makefile.in
index 2d0475d..a8b2b44 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -118,6 +118,7 @@ $(FLINT_LIB): $(LOBJS) $(LIB_SOURCES) $(EXT_SOURCES) $(HEADERS) $(EXT_HEADERS) |
 		$(LDCONFIG) -n "$(CURDIR)"; \
 	fi
 	ln -sf "$(FLINT_LIB)" "$(FLINT_LIBNAME)"; \
+	ln -sf "$(FLINT_LIB)" "$(FLINT_LIBNAME).$(FLINT_MAJOR)"; \
 
 libflint.a: $(OBJS) $(LIB_SOURCES) $(EXT_SOURCES) $(HEADERS) $(EXT_HEADERS) | build build/interfaces
 	$(AT)$(foreach ext, $(EXTENSIONS), $(foreach dir, $(filter-out %templates, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h))), mkdir -p build/$(dir); BUILD_DIR=$(CURDIR)/build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f $(CURDIR)/Makefile.subdirs -C $(ext)/$(dir) static || exit $$?;))
diff --git a/configure b/configure
index 424ab0a..959a650 100755
--- a/configure
+++ b/configure
@@ -450,7 +450,7 @@ fi
 
 # sometimes LDCONFIG is not to be found in the path. Look at some common places.
 case "$OS" in
-   MINGW*|CYGWIN*|Darwin)
+   MINGW*|CYGWIN*|Darwin|FreeBSD)
       LDCONFIG="true";;
    *)
       if [ -z "$LDCONFIG" ]; then
@@ -551,6 +551,8 @@ if [ -z "$CFLAGS" ]; then
       CFLAGS="-O2 -funroll-loops -g -D _WIN64 $POPCNT_FLAG $ABI_FLAG"
    elif [ "$MACHINE" = "mips64" ]; then
       CFLAGS="-O2 -funroll-loops -g $POPCNT_FLAG $ABI_FLAG"
+   elif [ "$KERNEL" = FreeBSD ]; then
+      CFLAGS="-std=c99 -pedantic -Wall -O2 -funroll-loops -g $POPCNT_FLAG $ABI_FLAG $OPENMP_FLAG"
    else
       CFLAGS="-ansi -pedantic -Wall -O2 -funroll-loops -g $POPCNT_FLAG $ABI_FLAG"
    fi
@@ -715,6 +717,7 @@ echo "FLINT_SHARED=$SHARED" >> Makefile
 echo "FLINT_LIB=$FLINT_LIB" >> Makefile
 echo "FLINT_LIBNAME=$FLINT_LIBNAME" >> Makefile
 echo "FLINT_SOLIB=$FLINT_SOLIB" >> Makefile
+echo "FLINT_MAJOR=$FLINT_MAJOR" >> Makefile
 echo "EXEEXT=$EXEEXT" >> Makefile
 echo "PREFIX=$PREFIX" >> Makefile
 echo "" >> Makefile
