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/59795068-f533-4762-8887-d96dbf484856n%40googlegroups.com.