Issue
I am trying to build OpenCV from source for Android library. However, the following error occurs:
[ 18%] Building C object 3rdparty/libtiff/CMakeFiles/libtiff.dir/tif_unix.c.o
/mnt/d/OpenCVBuild/src/3rdparty/libtiff/tif_stream.cxx:29:20: fatal error: iostream: No such file or directory
#include <iostream>
(By the way, such error seems to happen whenever it tries to include iostream, and I just paste one typical error since everyone is same.)
My build command:
/mnt/d/OpenCVBuild/cmake-3.15.1-Linux-x86_64/bin/cmake \
-DCMAKE_TOOLCHAIN_FILE=../src/platforms/android/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a \
-DANDROID_STL=c++_shared \
-DCMAKE_ANDROID_STL_TYPE=c++_shared \
-DANDROID_NATIVE_API_LEVEL=27 \
-DANDROID_SDK=/mnt/d/OpenCVBuild/android-sdk \
-DANDROID_NDK=/mnt/d/OpenCVBuild/android-ndk-r16b-linux-x86_64 \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_FAT_JAVA_LIB=OFF \
-DBUILD_PROTOBUF=OFF \
-DWITH_CUDA=OFF -DWITH_MATLAB=OFF -DBUILD_ANDROID_PROJECTS=OFF -DBUILD_ANDROID_EXAMPLES=OFF -DBUILD_DOCS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF \
../src \
&& make -j4
Thanks for any advice!!
EDIT: compile with -j1
[ 13%] Building CXX object 3rdparty/libtiff/CMakeFiles/libtiff.dir/tif_stream.cxx.o
/mnt/d/OpenCVBuild/src/3rdparty/libtiff/tif_stream.cxx:29:20: fatal error: iostream: No such file or directory
#include <iostream>
^
compilation terminated.
3rdparty/libtiff/CMakeFiles/libtiff.dir/build.make:582: recipe for target '3rdparty/libtiff/CMakeFiles/libtiff.dir/tif_stream.cxx.o' failed
make[2]: *** [3rdparty/libtiff/CMakeFiles/libtiff.dir/tif_stream.cxx.o] Error 1
CMakeFiles/Makefile2:293: recipe for target '3rdparty/libtiff/CMakeFiles/libtiff.dir/all' failed
make[1]: *** [3rdparty/libtiff/CMakeFiles/libtiff.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2
About where is the iostream: in location d:\OpenCVBuild\android-ndk-r16b-linux-x86_64\sources\cxx-stl\llvm-libc++\include\, there a lot of files, including the iostream (however without any extension, not iostream.h).
By the way, this is some info of cmake:
-- CPU/HW features:
-- Baseline: NEON
-- requested: NEON FP16
--
-- C/C++:
-- Built as dynamic libs?: YES
-- C++ Compiler: /mnt/d/OpenCVBuild/android-ndk-r16b-linux-x86_64/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-g++ (ver 4.9.0)
-- C++ flags (Release): -fexceptions -frtti -Wno-psabi --sysroot=/mnt/d/OpenCVBuild/android-ndk-r16b-linux-x86_64/platforms/android-27/arch-arm64 -funwind-tables -fsigned-char -no-canonical-prefixes -fdata-sections -ffunction-sections -Wa,--noexecstack -DANDROID -D__ANDROID_API__=27 -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wsign-promo -Wuninitialized -Winit-self -Wno-delete-non-virtual-dtor -Wno-comment -Wno-missing-field-initializers -fdiagnostics-show-option -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 -O3 -DNDEBUG -DNDEBUG
-- C++ flags (Debug): -fexceptions -frtti -Wno-psabi --sysroot=/mnt/d/OpenCVBuild/android-ndk-r16b-linux-x86_64/platforms/android-27/arch-arm64 -funwind-tables -fsigned-char -no-canonical-prefixes -fdata-sections -ffunction-sections -Wa,--noexecstack -DANDROID -D__ANDROID_API__=27 -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wsign-promo -Wuninitialized -Winit-self -Wno-delete-non-virtual-dtor -Wno-comment -Wno-missing-field-initializers -fdiagnostics-show-option -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden -fno-omit-frame-pointer -fno-strict-aliasing -O0 -g -DDEBUG -D_DEBUG -DDEBUG -D_DEBUG
-- C Compiler: /mnt/d/OpenCVBuild/android-ndk-r16b-linux-x86_64/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc
-- C flags (Release): -fexceptions -Wno-psabi --sysroot=/mnt/d/OpenCVBuild/android-ndk-r16b-linux-x86_64/platforms/android-27/arch-arm64 -funwind-tables -fsigned-char -no-canonical-prefixes -fdata-sections -ffunction-sections -Wa,--noexecstack -DANDROID -D__ANDROID_API__=27 -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wuninitialized -Winit-self -Wno-comment -Wno-missing-field-initializers -fdiagnostics-show-option -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 -O3 -DNDEBUG -DNDEBUG
-- C flags (Debug): -fexceptions -Wno-psabi --sysroot=/mnt/d/OpenCVBuild/android-ndk-r16b-linux-x86_64/platforms/android-27/arch-arm64 -funwind-tables -fsigned-char -no-canonical-prefixes -fdata-sections -ffunction-sections -Wa,--noexecstack -DANDROID -D__ANDROID_API__=27 -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wuninitialized -Winit-self -Wno-comment -Wno-missing-field-initializers -fdiagnostics-show-option -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fno-omit-frame-pointer -fno-strict-aliasing -O0 -g -DDEBUG -D_DEBUG -DDEBUG -D_DEBUG
-- Linker flags (Release): -Wl,--no-undefined -Wl,-allow-shlib-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--gc-sections
-- Linker flags (Debug): -Wl,--no-undefined -Wl,-allow-shlib-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--gc-sections
-- ccache: NO
-- Precompiled headers: NO
-- Extra dependencies: dl m log
EDIT2: I tried to use gnustl, i.e.
-DANDROID_STL=gnustl_static \
-DCMAKE_ANDROID_STL_TYPE=gnustl_static \
but with error:
[ 69%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/src/utils/logtagmanager.cpp.o
/mnt/d/OpenCVBuild/src/modules/core/src/utils/logtagconfigparser.cpp: In static member function 'static std::string cv::utils::logging::LogTagConfigParser::toString(cv::utils::logging::LogLevel)':
/mnt/d/OpenCVBuild/src/modules/core/src/utils/logtagconfigparser.cpp:301:16: error: 'to_string' is not a member of 'std'
return std::to_string((int)level);
^
/mnt/d/OpenCVBuild/src/modules/core/src/utils/logtagconfigparser.cpp:303:1: error: control reaches end of non-void function [-Werror=return-type]
}
Solution
include <iostream> is available only in C++ language, and not C. Those are different languages (even tough they are very similar).
You code is saved into a C file
[ 18%] Building C object 3rdparty/libtiff/CMakeFiles/libtiff.dir/tif_unix.c.o
/mnt/d/OpenCVBuild/src/3rdparty/libtiff/tif_stream.cxx:29:20: fatal error:
iostream: No such file or directory
#include <iostream>
Are you including a C++ file into a C file? Please re-run the code with make -j1 to get a proper error (messages will not get interlaced between compilation threads).
Answered By - elcuco
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.