Even if Blackfin GNU toolchain add prefix '_' to all symbols, symbol prefix is not accepted in the link flag --version-script. Don't append prefix in the symbols in the version script file. --- libpng-1.6.8/Makefile.am 2013-12-30 18:23:08.261797417 +0800 +++ libpng-1.6.8.bak/Makefile.am 2013-12-30 18:22:15.565795726 +0800 @@ -225,7 +225,7 @@ # interfering with the symbol file format. SYMBOL_CFLAGS = -DPNGLIB_LIBNAME='PNG@PNGLIB_MAJOR@@PNGLIB_MINOR@_0'\ -DPNGLIB_VERSION='@PNGLIB_VERSION@'\ - -DSYMBOL_PREFIX='$(SYMBOL_PREFIX)'\ + -DSYMBOL_PREFIX=''\ -DPNG_NO_USE_READ_MACROS -DPNG_BUILDING_SYMBOL_TABLE if DO_PNG_PREFIX --- libpng-1.6.8/Makefile.in 2013-12-30 18:23:08.261797417 +0800 +++ libpng-1.6.8.bak/Makefile.in 2013-12-30 18:22:09.853794547 +0800 @@ -698,7 +698,7 @@ # interfering with the symbol file format. SYMBOL_CFLAGS = -DPNGLIB_LIBNAME='PNG@PNGLIB_MAJOR@@PNGLIB_MINOR@_0' \ -DPNGLIB_VERSION='@PNGLIB_VERSION@' \ - -DSYMBOL_PREFIX='$(SYMBOL_PREFIX)' -DPNG_NO_USE_READ_MACROS \ + -DSYMBOL_PREFIX='' -DPNG_NO_USE_READ_MACROS \ -DPNG_BUILDING_SYMBOL_TABLE $(am__append_5) all: $(BUILT_SOURCES) config.h $(MAKE) $(AM_MAKEFLAGS) all-am