We now tried the same script on M1 based machine, and the error is as follows:
CXXLD libtesseract_native.la CXXLD libtesseract_ccutil.la CXXLD libtesseract_lstm.la CXXLD libtesseract.la CXXLD tesseract Undefined symbols for architecture arm64: "tesseract::IntSimdMatrix::intSimdMatrixNEON", referenced from: tesseract::SIMDDetect::SIMDDetect() in libtesseract.a(libtesseract_la-simddetect.o) tesseract::SIMDDetect::Update() in libtesseract.a(libtesseract_la-simddetect.o) "tesseract::DotProductNEON(float const*, float const*, int)", referenced from: tesseract::SIMDDetect::SIMDDetect() in libtesseract.a(libtesseract_la-simddetect.o) tesseract::SIMDDetect::Update() in libtesseract.a(libtesseract_la-simddetect.o) ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) On Tuesday, June 20, 2023 at 9:39:28 AM UTC+3 Maria Vilensky wrote: > Thanks for your reply, after many more googling and build attempts, I am > not even sure if this is supposed to work - compling arm64 library on an > Intel-based mac? Can anyone who tried this confirm this or give a > suggestion how to deal with it? > Thanks! > > On Sunday, June 18, 2023 at 5:02:10 PM UTC+3 zdenop wrote: > >> Hello, >> >> I am not Mac user, but the following output indicates that autotools are >> not able to use g++ for arm-64: >> >> checking for arm-apple-darwin64-g++... no >> checking for arm-apple-darwin64-clang++... no >> >> Also, you try to force linking LIBS="-lz -lpng -ljpeg -ltiff", but >> configure claims tiffio.h (tiff header file) is not present: >> checking tiffio.h usability... no >> checking tiffio.h presence... no >> checking for tiffio.h... no >> It does not make sense to me... >> >> Also >> checking for arm-apple-darwin64-pkg-config... no >> checking for pkg-config... /usr/local/bin/pkg-config >> IMO you should use pkg-config within $DEVROOT/ tree, right? >> >> There is a lot of "checking for arm-apple-darwin64-xyz... no". You need >> to fix this first. As this is not tesseract specific, try to use some Max >> arm forum for solving it. >> >> Zdenko >> >> >> ne 18. 6. 2023 o 14:07 Maria Vilensky <tigr...@gmail.com> napísal(a): >> >>> Hi, >>> >>> I'm trying to build tessract-ocr (latest version) on Mac Ventura for >>> arch arm-64 to link in ios project. >>> >>> I'm using this script: >>> >>> export DEVROOT=/Applications/Xcode.app/Contents/Developer >>> export SDKROOT= >>> "$DEVROOT/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.2.sdk" >>> export CFLAGS="-I$SDKROOT/usr/include/ >>> -I/desktop/projects/tesseract/include/ -arch arm64 -pipe -no-cpp-precomp >>> -isysroot $SDKROOT -miphoneos-version-min=10.0 -O2 -fembed-bitcode" >>> export CPPFLAGS=$CFLAGS >>> export CXXFLAGS="-I/desktop/projects/tesseract/arm-apple-darwin64/ >>> -arch arm64 -pipe -no-cpp-precomp -isysroot $SDKROOT >>> -miphoneos-version-min=10.0 -O2 -Wno-deprecated-register" >>> export LDFLAGS="-L$SDKROOT/usr/lib/" >>> export LIBS="-lz -lpng -ljpeg -ltiff" >>> export LD="$DEVROOT/usr/bin/ld" >>> export CC="$DEVROOT/usr/bin/gcc --target=arm-apple-darwin64" >>> export CXX="$DEVROOT/usr/bin/g++ --target=arm-apple-darwin64" >>> #export CXX="$DEVROOT/usr/bin/clang++ --target=arm-apple-darwin64 >>> export LEPTONICA_LIBS="-llept" >>> export AR= >>> "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar" >>> export RANLIB= >>> "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib" >>> >>> sudo ../configure --host=arm-apple-darwin64 --enable-static=yes >>> --enable-shared=no --disable-graphics --disable-legacy --without-cur >>> # sudo ../configure --target=arm-apple-darwin64 --enable-static=yes >>> --enable-shared=no --disable-graphics --disable-legacy --without-curl >>> >>> The configuration and make are successful, however, when I run >>> >>> *lipo ./.libs/libtesseract.a -info* >>> on the produced file I get: >>> >>> *Non-fat file: ./.libs/libtesseract.a is architecture: x86_64* >>> >>> And linking the library in xcode produces build error: >>> >>> *Ignoring file ./libtesseract.a, building for iOS-arm64 but attempting >>> to link with file built for macOS-x86_64* >>> >>> Undefined symbol: tesseract::TessBaseAPI::GetUTF8Text() >>> >>> Undefined symbol: tesseract::TessBaseAPI::SetVariable(char const*, char >>> const*) >>> >>> Undefined symbol: >>> tesseract::TessBaseAPI::SetPageSegMode(tesseract::PageSegMode) >>> >>> Undefined symbol: tesseract::TessBaseAPI::Init(char const*, char const*, >>> tesseract::OcrEngineMode, char**, int, >>> std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, >>> std::__1::allocator<char>>, >>> std::__1::allocator<std::__1::basic_string<char, >>> std::__1::char_traits<char>, std::__1::allocator<char>>>> const*, >>> std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, >>> std::__1::allocator<char>>, >>> std::__1::allocator<std::__1::basic_string<char, >>> std::__1::char_traits<char>, std::__1::allocator<char>>>> const*, >>> bool)Undefined symbol: tesseract::TessBaseAPI::Version() >>> >>> Undefined symbol: tesseract::TessBaseAPI::SetImage(unsigned char const*, >>> int, int, int, int) >>> >>> Undefined symbol: tesseract::TessBaseAPI::TessBaseAPI() >>> >>> Here is the output of configure: >>> >>> configure: WARNING: unrecognized options: --without-cur >>> checking for arm-apple-darwin64-g++... no >>> checking for arm-apple-darwin64-clang++... no >>> checking for g++... g++ >>> checking whether the C++ compiler works... yes >>> checking for C++ compiler default output file name... a.out >>> checking for suffix of executables... >>> checking whether we are cross compiling... no >>> checking for suffix of object files... o >>> checking whether we are using the GNU C++ compiler... yes >>> checking whether g++ accepts -g... yes >>> checking for a BSD-compatible install... /usr/bin/install -c >>> checking whether build environment is sane... yes >>> checking for a thread-safe mkdir -p... ../config/install-sh -c -d >>> checking for gawk... no >>> checking for mawk... no >>> checking for nawk... no >>> checking for awk... awk >>> checking whether make sets $(MAKE)... yes >>> checking whether make supports the include directive... yes (GNU style) >>> checking whether make supports nested variables... yes >>> checking dependency style of g++... gcc3 >>> checking for a sed that does not truncate output... /usr/bin/sed >>> checking Major version... 5 >>> checking Minor version... 3 >>> checking Point version... 1-22-g24da4 >>> checking whether make supports nested variables... (cached) yes >>> checking build system type... x86_64-apple-darwin22.5.0 >>> checking host system type... arm-apple-darwin64 >>> checking whether C++ compiler accepts >>> -Werror=unused-command-line-argument... yes >>> checking whether C++ compiler accepts -mfpu=neon... no >>> checking for feenableexcept... no >>> checking whether C++ compiler accepts -fopenmp-simd... yes >>> checking --enable-float32 argument... >>> checking --enable-graphics argument... no >>> checking --enable-legacy argument... no >>> checking for g++ option to support OpenMP... unsupported >>> checking how to run the C++ preprocessor... g++ -E >>> checking for grep that handles long lines and -e... /usr/bin/grep >>> checking for egrep... /usr/bin/grep -E >>> checking for ANSI C header files... yes >>> checking for sys/types.h... yes >>> checking for sys/stat.h... yes >>> checking for stdlib.h... yes >>> checking for string.h... yes >>> checking for memory.h... yes >>> checking for strings.h... yes >>> checking for inttypes.h... yes >>> checking for stdint.h... yes >>> checking for unistd.h... yes >>> checking tiffio.h usability... no >>> checking tiffio.h presence... no >>> checking for tiffio.h... no >>> checking --enable-opencl argument... >>> checking tensorflow/core/framework/graph.pb.h usability... no >>> checking tensorflow/core/framework/graph.pb.h presence... no >>> checking for tensorflow/core/framework/graph.pb.h... no >>> checking if -framework Accelerate works... yes >>> checking if -framework OpenCL works... yes >>> checking --enable-visibility argument... >>> checking whether to use tessdata-prefix... yes >>> checking if compiling with clang... yes >>> checking whether to enable debugging... >>> checking how to print strings... printf >>> checking for arm-apple-darwin64-gcc... no >>> checking for gcc... gcc >>> checking whether we are using the GNU C compiler... yes >>> checking whether gcc accepts -g... yes >>> checking for gcc option to accept ISO C89... none needed >>> checking whether gcc understands -c and -o together... yes >>> checking dependency style of gcc... gcc3 >>> checking for a sed that does not truncate output... (cached) /usr/bin/sed >>> checking for fgrep... /usr/bin/grep -F >>> checking for ld used by gcc... >>> /Users/Tnova/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld >>> checking if the linker >>> (/Users/Tnova/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) >>> >>> is GNU ld... no >>> checking for BSD- or MS-compatible name lister (nm)... no >>> checking for arm-apple-darwin64-dumpbin... no >>> checking for arm-apple-darwin64-link... no >>> checking for dumpbin... no >>> checking for link... link -dump >>> checking the name lister (nm) interface... BSD nm >>> checking whether ln -s works... yes >>> checking the maximum length of command line arguments... 786432 >>> checking how to convert x86_64-apple-darwin22.5.0 file names to >>> arm-apple-darwin64 format... func_convert_file_noop >>> checking how to convert x86_64-apple-darwin22.5.0 file names to >>> toolchain format... func_convert_file_noop >>> checking for >>> /Users/Tnova/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld >>> >>> option to reload object files... -r >>> checking for arm-apple-darwin64-objdump... no >>> checking for objdump... objdump >>> checking how to recognize dependent libraries... pass_all >>> checking for arm-apple-darwin64-dlltool... no >>> checking for dlltool... no >>> checking how to associate runtime and link libraries... printf %s\n >>> checking for arm-apple-darwin64-ar... no >>> checking for ar... ar >>> checking for archiver @FILE support... no >>> checking for arm-apple-darwin64-strip... no >>> checking for strip... strip >>> checking for arm-apple-darwin64-ranlib... no >>> checking for ranlib... ranlib >>> checking command to parse nm output from gcc object... ok >>> checking for sysroot... no >>> checking for a working dd... /bin/dd >>> checking how to truncate binary pipes... /bin/dd bs=4096 count=1 >>> checking for arm-apple-darwin64-mt... no >>> checking for mt... no >>> checking if : is a manifest tool... no >>> checking for arm-apple-darwin64-dsymutil... no >>> checking for dsymutil... dsymutil >>> checking for arm-apple-darwin64-nmedit... no >>> checking for nmedit... nmedit >>> checking for arm-apple-darwin64-lipo... no >>> checking for lipo... lipo >>> checking for arm-apple-darwin64-otool... no >>> checking for otool... otool >>> checking for arm-apple-darwin64-otool64... no >>> checking for otool64... no >>> checking for -single_module linker flag... yes >>> checking for -exported_symbols_list linker flag... yes >>> checking for -force_load linker flag... yes >>> checking for dlfcn.h... yes >>> checking for objdir... .libs >>> checking if gcc supports -fno-rtti -fno-exceptions... yes >>> checking for gcc option to produce PIC... -fno-common -DPIC >>> checking if gcc PIC flag -fno-common -DPIC works... yes >>> checking if gcc static flag -static works... no >>> checking if gcc supports -c -o file.o... yes >>> checking if gcc supports -c -o file.o... (cached) yes >>> checking whether the gcc linker >>> (/Users/Tnova/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) >>> >>> supports shared libraries... yes >>> checking dynamic linker characteristics... darwin64 dyld >>> checking how to hardcode library paths into programs... immediate >>> checking whether stripping libraries is possible... yes >>> checking if libtool supports shared libraries... yes >>> checking whether to build shared libraries... no >>> checking whether to build static libraries... yes >>> checking how to run the C++ preprocessor... g++ -E >>> checking for ld used by g++... >>> /Users/Tnova/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld >>> checking if the linker >>> (/Users/Tnova/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) >>> >>> is GNU ld... no >>> checking whether the g++ linker >>> (/Users/Tnova/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) >>> >>> supports shared libraries... yes >>> checking for g++ option to produce PIC... -fno-common -DPIC >>> checking if g++ PIC flag -fno-common -DPIC works... yes >>> checking if g++ static flag -static works... no >>> checking if g++ supports -c -o file.o... yes >>> checking if g++ supports -c -o file.o... (cached) yes >>> checking whether the g++ linker >>> (/Users/Tnova/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) >>> >>> supports shared libraries... yes >>> checking dynamic linker characteristics... darwin64 dyld >>> checking how to hardcode library paths into programs... immediate >>> checking whether C++ compiler accepts -std=c++17... yes >>> checking whether C++ compiler accepts -std=c++20... yes >>> checking for library containing pthread_create... none required >>> checking for brew... true >>> checking for asciidoc... false >>> checking for xsltproc... true >>> checking for wchar_t... yes >>> checking for long long int... yes >>> checking for arm-apple-darwin64-pkg-config... no >>> checking for pkg-config... /usr/local/bin/pkg-config >>> checking pkg-config is at least version 0.9.0... yes >>> checking for libcurl... yes >>> checking for lept >= 1.74... yes >>> checking for libarchive... yes >>> checking for icu-uc >= 52.1... yes >>> checking for icu-i18n >= 52.1... yes >>> checking for pango >= 1.38.0... no >>> configure: WARNING: pango 1.38.0 or higher is required, but was not >>> found. >>> configure: WARNING: Training tools WILL NOT be built. >>> configure: WARNING: Try to install libpango1.0-dev package. >>> checking for cairo... no >>> configure: WARNING: Training tools WILL NOT be built because of missing >>> cairo library. >>> configure: WARNING: Try to install libcairo-dev?? package. >>> checking for pangocairo... no >>> checking for pangoft2... no >>> checking that generated files are newer than configure... done >>> configure: creating ./config.status >>> config.status: creating include/tesseract/version.h >>> config.status: creating Makefile >>> config.status: creating tesseract.pc >>> config.status: creating tessdata/Makefile >>> config.status: creating tessdata/configs/Makefile >>> config.status: creating tessdata/tessconfigs/Makefile >>> config.status: creating java/Makefile >>> config.status: creating java/com/Makefile >>> config.status: creating java/com/google/Makefile >>> config.status: creating java/com/google/scrollview/Makefile >>> config.status: creating java/com/google/scrollview/events/Makefile >>> config.status: creating java/com/google/scrollview/ui/Makefile >>> config.status: creating include/config_auto.h >>> config.status: executing depfiles commands >>> config.status: executing libtool commands >>> configure: WARNING: unrecognized options: --without-cur >>> >>> Configuration is done. >>> You can now build and install tesseract by running: >>> >>> $ make >>> $ sudo make install >>> $ sudo ldconfig >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "tesseract-ocr" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to tesseract-oc...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/tesseract-ocr/dcdf433a-1332-405e-b97d-b5a2e42ad6d1n%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/tesseract-ocr/dcdf433a-1332-405e-b97d-b5a2e42ad6d1n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- You received this message because you are subscribed to the Google Groups "tesseract-ocr" group. To unsubscribe from this group and stop receiving emails from it, send an email to tesseract-ocr+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/tesseract-ocr/31a204ca-695c-4ed0-8393-8ce544a66c4cn%40googlegroups.com.