When I was building jbig2enc in a Windows x64 Msys2 environment, I got errors on undefined htons and htonl symbols. Specifically:
libtool: compile: g++ -DPACKAGE_NAME=\"jbig2enc\" -DPACKAGE_TARNAME=\"jbig2enc-0.28\" -DPACKAGE_VERSION=\"0.28\" "-DPACKAGE_STRING=\"jbig2enc 0.28\"" -DPACKAGE_BUGREPORT=\"agl@imperialviolet.org\" -DPACKAGE_URL=\"https://github.com/agl/jbig2enc\" -DPACKAGE=\"jbig2enc-0.28\" -DVERSION=\"0.28\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DLT_OBJDIR=\".libs/\" -DHAVE_LIBLEPTONICA=1 -DHAVE_LIBTIFF=1 -DHAVE_LIBPNG=1 -DHAVE_LIBJPEG=1 -DHAVE_LIBGIF=1 -DHAVE_LIBWEBP=1 -DHAVE_LIBZ=1 -DHAVE_LIBM=1 -I. -Wall -g -O2 -c jbig2comparator.cc -DDLL_EXPORT -DPIC -o .libs/jbig2comparator.o
libtool: compile: g++ -DPACKAGE_NAME=\"jbig2enc\" -DPACKAGE_TARNAME=\"jbig2enc-0.28\" -DPACKAGE_VERSION=\"0.28\" "-DPACKAGE_STRING=\"jbig2enc 0.28\"" -DPACKAGE_BUGREPORT=\"agl@imperialviolet.org\" -DPACKAGE_URL=\"https://github.com/agl/jbig2enc\" -DPACKAGE=\"jbig2enc-0.28\" -DVERSION=\"0.28\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DLT_OBJDIR=\".libs/\" -DHAVE_LIBLEPTONICA=1 -DHAVE_LIBTIFF=1 -DHAVE_LIBPNG=1 -DHAVE_LIBJPEG=1 -DHAVE_LIBGIF=1 -DHAVE_LIBWEBP=1 -DHAVE_LIBZ=1 -DHAVE_LIBM=1 -I. -Wall -g -O2 -c jbig2comparator.cc -o jbig2comparator.o >/dev/null 2>&1
/bin/sh ../libtool --tag=CXX --mode=link g++ -Wall -g -O2 -no-undefined -version-info 0:28 -o libjbig2enc.la -rpath /usr/lib jbig2enc.lo jbig2arith.lo jbig2sym.lo jbig2comparator.lo -lm -lz -lwebp -lgif -ljpeg -lpng -ltiff -lleptonica
libtool: link: g++ -shared -nostdlib D:/msys64/clang64/lib/dllcrt2.o D:/msys64/clang64/lib/crtbegin.o .libs/jbig2enc.o .libs/jbig2arith.o .libs/jbig2sym.o .libs/jbig2comparator.o -lz -lwebp -lgif -ljpeg -lpng -ltiff -lleptonica -LD:/msys64/clang64/x86_64-w64-mingw32/lib -LD:/msys64/clang64/x86_64-w64-mingw32/mingw/lib -LD:/msys64/clang64/lib -LD:/msys64/clang64/lib/clang/17/lib/windows -lc++ -lmingw32 D:/msys64/clang64/lib/clang/17/lib/windows/libclang_rt.builtins-x86_64.a -lunwind -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 D:/msys64/clang64/lib/clang/17/lib/windows/libclang_rt.builtins-x86_64.a -lunwind -lmoldname -lmingwex -lmsvcrt -lkernel32 D:/msys64/clang64/lib/crtend.o -g -O2 -o .libs/msys-jbig2enc-0.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libjbig2enc.dll.a
ld.lld: error: undefined symbol: __declspec(dllimport) htonl
>>> referenced by jbig2enc.cc:674
>>> .libs/jbig2enc.o:(jbig2_pages_complete(jbig2ctx*, int*))
>>> referenced by jbig2enc.cc:696
>>> .libs/jbig2enc.o:(jbig2_pages_complete(jbig2ctx*, int*))
>>> referenced by jbig2enc.cc:751
>>> .libs/jbig2enc.o:(jbig2_produce_page(jbig2ctx*, int, int, int, int*))
>>> referenced 18 more times
ld.lld: error: undefined symbol: __declspec(dllimport) htons
>>> referenced by ./jbig2segments.h:0
>>> .libs/jbig2enc.o:(Segment::write(unsigned char*))
g++: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [Makefile:472:libjbig2enc.la] 错误 1
make[1]: 离开目录“/d/Github/jbig2enc/src”
make: *** [Makefile:479:all-recursive] 错误 1
htons and htonl are part of the arpa/inet.h headers in UNIX-like environments. In Windows development environment, these functions are provided by the Winsock2 library. MSYS ought to ship with the Winsock2 library - or else you can install it from the msys2-w32api-headers package.
Link to Winsock2
When running autoconfig, add the -lws2_32 linker flag. For my example,
LIBS="-lws2_32" ./configure
No comments:
Post a Comment