MNN icon indicating copy to clipboard operation
MNN copied to clipboard

DANDROID_STL=none 之后编译出错linker command failed with exit code 1 (use -v to see invocation)

Open shuhuajin opened this issue 2 years ago • 1 comments

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_traits >::operator>>(float&)' /data/androidtools/MNN-master/tools/cpp/checkFile.cpp:41: undefined reference to std::__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_traits >::~basic_ios()' /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_traits >::~basic_ios()' /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_traits >::~basic_ios()' /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_traits >::~basic_ios()' /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_traits >::~basic_ios()' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/iosfwd:145: undefined reference to operator 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_traits >::~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_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_traits >::~basic_streambuf()' /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/fstream:394: undefined reference to operator 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_traits >::imbue(std::__1::locale const&)': /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/fstream:1062: undefined reference to operator 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_traits >::setbuf(char*, long)': /data/androidtools/MNN-master/external/stl_libc++/include/libcxx_inc/fstream:874: undefined reference to operator 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_traits >::basic_streambuf()' 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 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_traits >::~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]+0x40): undefined reference to virtual 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_traits >::~basic_istream()' CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o:(.data.rel.ro._ZTVNSt3__113basic_filebufIcNS_11char_traitsIcEEEE[_ZTVNSt3__113basic_filebufIcNS_11char_traitsIcEEEE]+0x48): undefined reference to std::__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_traits >::xsgetn(char*, long)' CMakeFiles/checkFile.out.dir/tools/cpp/checkFile.cpp.o:(.data.rel.ro._ZTVNSt3__113basic_filebufIcNS_11char_traitsIcEEEE[_ZTVNSt3__113basic_filebufIcNS_11char_traitsIcEEEE]+0x60): undefined reference to std::__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 >::xsputn(char const*, long)' clang++: error: linker command failed with exit code 1 (use -v to see invocation) CMakeFiles/checkFile.out.dir/build.make:96: recipe for target 'checkFile.out' failed make[2]: *** [checkFile.out] Error 1 CMakeFiles/Makefile2:898: recipe for target 'CMakeFiles/checkFile.out.dir/all' failed make[1]: *** [CMakeFiles/checkFile.out.dir/all] Error 2 Makefile:135: recipe for target 'all' failed make: *** [all] Error 2

请帮忙解决。

shuhuajin avatar Apr 11 '22 06:04 shuhuajin

用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也无法通过。

shuhuajin avatar Apr 11 '22 06:04 shuhuajin

-DANDROID_STL=c++_static or -DANDROID_STL=c++_shared

wangzhaode avatar Nov 01 '22 06:11 wangzhaode