我正在尝试从 Android 库的源代码构建OpenCV。但是,发生以下错误:
[ 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>
(顺便说一句,这种错误似乎在它尝试包括iostream时发生,并且我只是粘贴了一个典型错误,因为每个人都是相同的。)
我的构建命令:
/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
谢谢您的建议!
编辑:使用-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
关于iostream的位置:在位置d:\OpenCVBuild\android-ndk-r16b-linux-x86_64\sources\cxx-stl\llvm-libc++\include\
中,有很多文件,包括iostream
(但是没有任何扩展名,没有iostream.h
)。
顺便说一下,这是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:我尝试使用gnustl
,即
-DANDROID_STL=gnustl_static \
-DCMAKE_ANDROID_STL_TYPE=gnustl_static \
但有错误:
[ 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]
}
答案 0 :(得分:0)
include <iostream>
仅在C ++语言中可用,而在C语言中不可用。它们是不同的语言(即使它们非常相似也是如此)。
您的代码已保存到C文件
[ 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>
您是否将C ++文件包含在C文件中?请使用make -j1
重新运行代码,以获取正确的错误(消息不会在编译线程之间交错)。