MNN
MNN copied to clipboard
DANDROID_STL=none 之后编译出错linker command failed with exit code 1 (use -v to see invocation)
1.project/android/build_64.sh内容如下:只修改了DANDROID_STL=none部分。
-DCMAKE_BUILD_TYPE=Release
-DANDROID_ABI="arm64-v8a"
-DANDROID_STL=none
-DMNN_USE_LOGCAT=false
-DMNN_BUILD_BENCHMARK=ON
-DMNN_USE_SSE=OFF
-DMNN_SUPPORT_BF16=OFF
-DMNN_BUILD_TEST=ON
-DANDROID_NATIVE_API_LEVEL=android-21
-DMNN_BUILD_FOR_ANDROID_COMMAND=true \
2./MNN-master/CMakeLists.txt修改如下:修改MNN_ARM82 为ON
option(MNN_METAL "Enable Metal" OFF) option(MNN_OPENCL "Enable OpenCL" OFF) option(MNN_OPENGL "Enable OpenGL" OFF) option(MNN_VULKAN "Enable Vulkan" OFF) option(MNN_ARM82 "Enable ARM82" ON) option(MNN_ONEDNN "Enable oneDNN" OFF) option(MNN_AVX512 "Enable AVX512" OFF) option(MNN_CUDA "Enable CUDA" OFF) option(MNN_TENSORRT "Enable TensorRT" OFF) option(MNN_COREML "Enable CoreML" OFF)
添加c++头文件,类似math,stream等头文件 include_directories(${CMAKE_CURRENT_LIST_DIR}/external/stl_libc++/include/libcxx_inc)
目的是不生成stacit的.a而是生成依赖第三方库和头文件的libmnn.so文件。
修改完毕,之后编译出现如下问题。
[ 61%] Linking CXX executable checkFile.out
CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function std::__1::basic_ios<char, std::__1::char_traits<char> >::init(std::__1::basic_streambuf<char, std::__1::char_traits<char> >*)': /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/ios:693: undefined reference to
std::__1::ios_base::init(void*)'
CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function std::__1::ios_base::setstate(unsigned int)': /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/ios:529: undefined reference to
std::__1::ios_base::clear(unsigned int)'
CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function std::__1::basic_ios<char, std::__1::char_traits<char> >::init(std::__1::basic_streambuf<char, std::__1::char_traits<char> >*)': /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/ios:693: undefined reference to
std::__1::ios_base::init(void*)'
CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function std::__1::ios_base::setstate(unsigned int)': /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/ios:529: undefined reference to
std::__1::ios_base::clear(unsigned int)'
CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function main': /data/androidtools/MNN-master/tools/cpp/checkFile.cpp:40: undefined reference to
std::__1::basic_istream<char, std::__1::char_traitsstd::__1::basic_istream<char, std::__1::char_traits<char> >::operator>>(float&)' CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function
~basic_ifstream':
/data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/iosfwd:145: undefined reference to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/iosfwd:145: undefined reference to
std::__1::basic_ios<char, std::__1::char_traitsstd::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/iosfwd:145: undefined reference to
std::__1::basic_ios<char, std::__1::char_traitsstd::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/iosfwd:145: undefined reference to
std::__1::basic_ios<char, std::__1::char_traitsstd::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/iosfwd:145: undefined reference to
std::__1::basic_ios<char, std::__1::char_traitsstd::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/iosfwd:145: undefined reference to
std::__1::basic_ios<char, std::__1::char_traitsoperator delete(void*)' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/iosfwd:145: undefined reference to
std::__1::basic_istream<char, std::__1::char_traitsstd::__1::basic_ios<char, std::__1::char_traits<char> >::~basic_ios()' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/iosfwd:145: undefined reference to
operator delete(void*)'
CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function ~basic_filebuf': /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/fstream:407: undefined reference to
operator delete'
/data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/fstream:409: undefined reference to operator delete[](void*)' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/fstream:410: undefined reference to
std::__1::basic_streambuf<char, std::__1::char_traitsoperator delete(void*)' CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function
std::__1::codecvt<char, char, mbstate_t> const& std::__1::use_facet<std::__1::codecvt<char, char, mbstate_t> >(std::__1::locale const&)':
/data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/__locale:234: undefined reference to std::__1::codecvt<char, char, mbstate_t>::id' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/__locale:234: undefined reference to
std::__1::codecvt<char, char, mbstate_t>::id'
/data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/__locale:234: undefined reference to std::__1::locale::use_facet(std::__1::locale::id&) const' CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function
std::__1::basic_filebuf<char, std::__1::char_traitsoperator delete[](void*)' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/fstream:1083: undefined reference to
operator new[](unsigned long)'
/data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/fstream:1077: undefined reference to operator new[](unsigned long)' CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function
std::__1::basic_filebuf<char, std::__1::char_traitsoperator delete[](void*)' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/fstream:876: undefined reference to
operator delete'
/data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/fstream:887: undefined reference to operator new[](unsigned long)' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/fstream:907: undefined reference to
operator new[](unsigned long)'
CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function basic_filebuf': /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/fstream:214: undefined reference to
std::__1::basic_streambuf<char, std::__1::char_traitsstd::__1::basic_streambuf<char, std::__1::char_traits<char> >::getloc() const': /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/streambuf:150: undefined reference to
std::__1::locale::locale(std::__1::locale const&)'
CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function bool std::__1::has_facet<std::__1::codecvt<char, char, mbstate_t> >(std::__1::locale const&)': /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/__locale:226: undefined reference to
std::__1::codecvt<char, char, mbstate_t>::id'
/data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/__locale:226: undefined reference to std::__1::codecvt<char, char, mbstate_t>::id' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/__locale:226: undefined reference to
std::__1::locale::has_facet(std::__1::locale::id&) const'
CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function basic_filebuf': /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/fstream:306: undefined reference to
std::__1::locale::~locale()'
CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function std::__1::basic_streambuf<char, std::__1::char_traits<char> >::getloc() const': /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/streambuf:150: undefined reference to
std::__1::locale::locale(std::__1::locale const&)'
CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function std::__1::codecvt<char, char, mbstate_t> const& std::__1::use_facet<std::__1::codecvt<char, char, mbstate_t> >(std::__1::locale const&)': /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/__locale:234: undefined reference to
std::__1::codecvt<char, char, mbstate_t>::id'
/data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/__locale:234: undefined reference to std::__1::codecvt<char, char, mbstate_t>::id' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/__locale:234: undefined reference to
std::__1::locale::use_facet(std::__1::locale::id&) const'
CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o: In function basic_filebuf': /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/fstream:308: undefined reference to
std::__1::locale::~locale()'
CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o:(.data.rel.ro._ZTCNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE0_NS_13basic_istreamIcS2_EE[_ZTCNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE0_NS_13basic_istreamIcS2_EE]+0x18): undefined reference to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()' CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o:(.data.rel.ro._ZTCNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE0_NS_13basic_istreamIcS2_EE[_ZTCNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE0_NS_13basic_istreamIcS2_EE]+0x20): undefined reference to
std::__1::basic_istream<char, std::__1::char_traitsvirtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()' CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o:(.data.rel.ro._ZTCNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE0_NS_13basic_istreamIcS2_EE[_ZTCNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE0_NS_13basic_istreamIcS2_EE]+0x48): undefined reference to
virtual thunk to std::__1::basic_istream<char, std::__1::char_traitsstd::__1::basic_streambuf<char, std::__1::char_traits<char> >::showmanyc()' CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o:(.data.rel.ro._ZTVNSt3__113basic_filebufIcNS_11char_traitsIcEEEE[_ZTVNSt3__113basic_filebufIcNS_11char_traitsIcEEEE]+0x50): undefined reference to
std::__1::basic_streambuf<char, std::__1::char_traitsstd::__1::basic_streambuf<char, std::__1::char_traits<char> >::uflow()' CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o:(.data.rel.ro._ZTVNSt3__113basic_filebufIcNS_11char_traitsIcEEEE[_ZTVNSt3__113basic_filebufIcNS_11char_traitsIcEEEE]+0x70): undefined reference to
std::__1::basic_streambuf<char, std::__1::char_traits
请帮忙解决。
用android.mk include $(CLEAR_VARS) LOCAL_MODULE := STL_LIBC++ LOCAL_LDLIBS := -llog LOCAL_SRC_FILES := ../../../../external/stl_libc++/libs/$(TARGET_ARCH_ABI)/libc++.so include $(PREBUILT_SHARED_LIBRARY) LIBCPP_INCLUDE := ../../../../external/stl_libc++/include/libcxx_inc
能过编译,但是cmakelist.txt里面添加.so也无法通过。
-DANDROID_STL=c++_static
or -DANDROID_STL=c++_shared