Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AndroidNDK尝试将库与pthread链接,尽管我没有添加它_Android_C++_Cmake_Linker - Fatal编程技术网

AndroidNDK尝试将库与pthread链接,尽管我没有添加它

AndroidNDK尝试将库与pthread链接,尽管我没有添加它,android,c++,cmake,linker,Android,C++,Cmake,Linker,这是SDK尝试链接我的项目时的输出: : && /home/user/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=armv7-none-linux-androideabi24 --gcc-toolchain=/home/user/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux

这是SDK尝试链接我的项目时的输出:

  : && /home/user/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=armv7-none-linux-androideabi24 --gcc-toolchain=/home/user/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64 --sysroot=/home/user/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security  -std=c++17 -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libgcc_real.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,liborwell_android.so -o /home/user/orwell2/orwell_flutter_app/build/app/intermediates/cmake/debug/obj/armeabi-v7a/liborwell_android.so CMakeFiles/orwell_android.dir/orwell_jni.cpp.o CMakeFiles/orwell_android.dir/DecodedFfmpegFrameJNI.cpp.o CMakeFiles/orwell_android.dir/JavaOrwellFlutterRenderer.cpp.o CMakeFiles/orwell_android.dir/MediaCodecDecoder.cpp.o CMakeFiles/orwell_android.dir/JavaSimpleFileWriter.cpp.o CMakeFiles/orwell_android.dir/JavaHashMapJNI.cpp.o CMakeFiles/orwell_android.dir/JavaFlutterEventMessenger.cpp.o  _liborwell/liborwell_static.a -landroid /home/user/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/24/liblog.so -lmediandk /home/user/orwell2/orwell_flutter_app/android/app/src/main/cpp/../../../../../../deps/ffmpeg/build/android/armeabi-v7a/lib/libavcodec.so /home/user/orwell2/orwell_flutter_app/android/app/src/main/cpp/../../../../../../deps/ffmpeg/build/android/armeabi-v7a/lib/libavutil.so /home/user/orwell2/orwell_flutter_app/android/app/src/main/cpp/../../../../../../deps/ffmpeg/build/android/armeabi-v7a/lib/libswscale.so /home/user/orwell2/orwell_flutter_app/android/app/src/main/cpp/../../../../../../deps/ffmpeg/build/android/armeabi-v7a/lib/libswresample.so -llog /home/user/orwell2/orwell_flutter_app/build/app/intermediates/cmake/debug/obj/armeabi-v7a/libmyRtspClient.so /home/user/orwell2/orwell_flutter_app/build/app/intermediates/cmake/debug/obj/armeabi-v7a/libjrtp.so _liborwell/_myRtspClient/libmyRtspClient-static.a _liborwell/_myRtspClient/_JTRPLIB/src/libjrtp.a _liborwell/_ZLMediaKit/libzlmediakit.a _liborwell/_ZLMediaKit/libzltoolkit.a _liborwell/_ZLMediaKit/libmpeg.a _liborwell/_ZLMediaKit/libmov.a _liborwell/_ZLMediaKit/libflv.a _liborwell/common/openvpn_zl_socket/libopenvpn_zl_socket.a _liborwell/common/openvpn_myrtsp_socket/libmyrtsp_vpn_tcp_transmitter.a _liborwell/_libopenvpn3/src/libopenvpn/libopenvpn_lib.a _liborwell/_libopenvpn3/openvpn3/libssl.a _liborwell/_libopenvpn3/openvpn3/libcrypto.a -lpthread _liborwell/_libopenvpn3/openvpn3/liblzo.a _liborwell/_libopenvpn3/openvpn3/liblz4.a _liborwell/_libopenvpn3/libtins/lib/libtins.a _liborwell/_libopenvpn3/smoltcp_cpp_interface/libsmoltcp_cpp_static.a /home/user/orwell2/deps/libopenvpn3/smoltcp_cpp_interface/target/debug/libsmoltcp_cpp_interface_rust.a -ldl _liborwell/common/liborwellebml/liborwell_ebml.a _liborwell/_libebml/libebml.a _liborwell/common/liborwellprofile/liborwell_profile.a -latomic -lm && :
然后我得到

 /home/user/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lpthread
  clang++: error: linker command failed with exit code 1 (use -v to see invocation)
  ninja: build stopped: subcommand failed.
我不知道为什么它会链接到pthread,因为我在CMakeLists.txt中没有包含pthread:

cmake_minimum_required(VERSION 3.6)
add_compile_options(-D ANDROID)
set(COMPILE_TARGET ANDROID)

project(orwell_android)

set(FLAVOR ANDROID)

#temporary quirk for libtins
set(OPENSSL_INCLUDE_DIR "")

set(ORWELL_ANDROID_PROJECT_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../..)
set(DEPENDENCIES ${ORWELL_ANDROID_PROJECT_ROOT}/deps/)

add_subdirectory(${ORWELL_ANDROID_PROJECT_ROOT}/liborwell/ _liborwell)

include(${ORWELL_ANDROID_PROJECT_ROOT}/liborwell/ORWELL_INCLUDES.cmake)
include_directories(${LIBORWELL_INCLUDE_DIRS})

find_library(log_library log)

file(GLOB ORWELL_ANDROID_SOURCES 
"orwell_jni.cpp" 
"DecodedFfmpegFrameJNI.cpp"
"JavaOrwellFlutterRenderer.cpp" 
"MediaCodecDecoder.cpp" 
"JavaSimpleFileWriter.cpp" 
"JavaHashMapJNI.cpp" 
"JavaFlutterEventMessenger.cpp")

include_directories(${CMAKE_CURRENT_SOURCE_DIR})

set(FFMPEG_INCLUDE_DIR ${ORWELL_ANDROID_PROJECT_ROOT}/deps/ffmpeg/build/android/${ANDROID_ABI}/include)
include_directories(${FFMPEG_INCLUDE_DIR})
set(FFMPEG_LIB_DIR ${ORWELL_ANDROID_PROJECT_ROOT}/deps/ffmpeg/build/android/${ANDROID_ABI}/lib)

add_library(libavcodec SHARED IMPORTED)
set_target_properties(libavcodec PROPERTIES IMPORTED_LOCATION ${FFMPEG_LIB_DIR}/libavcodec.so)
add_library(libavutil SHARED IMPORTED)
set_target_properties(libavutil PROPERTIES IMPORTED_LOCATION ${FFMPEG_LIB_DIR}/libavutil.so)
add_library(libswscale SHARED IMPORTED)
set_target_properties(libswscale PROPERTIES IMPORTED_LOCATION ${FFMPEG_LIB_DIR}/libswscale.so)
add_library(libswresample SHARED IMPORTED)
set_target_properties(libswresample PROPERTIES IMPORTED_LOCATION ${FFMPEG_LIB_DIR}/libswresample.so)


add_library(orwell_android SHARED ${ORWELL_ANDROID_SOURCES})
add_dependencies(orwell_android orwell_static libavcodec libavutil libswscale libswresample)
target_link_libraries(orwell_android orwell_static android ${log_library} mediandk libavcodec libavutil libswscale libswresample)
您可以看到NDK正在尝试链接
liborwell\u android
,这就是我在这里看到的,而且它没有在
target\u link\u库中包含
libpthread


我知道Android不需要pthread,那么如何强制它不包含pthread呢?

_liborwell/_libopenvpn3/openvpn3/libssl.a _liborwell/_libopenvpn3/openvpn3/libcrypto.a-lpthread _liborwell/_libopenvpn3/openvpn3/liblzo.a
,基于编译器命令中的库序列,我最好的猜测是您在某个地方依赖OpenSSL(在
${ORWELL\u ANDROID\u PROJECT\u ROOT}/liborwell/ORWELL_包括.cmake
?),它可能被配置为使用
pthreads
。根据,可以将其配置为完全不使用线程:

[2] OpenSSL构建有线程功能,除非用户指定
无线程
。密钥线程方案的值可能是
(未知)
,在这种情况下,用户必须为
配置
提供一些编译标志


_liborwell/_libopenvpn3/openvpn3/libssl.a _liborwell/_libopenvpn3/openvpn3/libcrypto.a-lpthread _liborwell/_libopenvpn3/openvpn3/liblzo.a
,基于编译器命令中的库序列,我最好的猜测是您在某个地方依赖OpenSSL(在
${ORWELL\u ANDROID\u PROJECT\u ROOT}/liborwell/ORWELL_包括.cmake
?),它可能被配置为使用
pthreads
。根据,可以将其配置为完全不使用线程:

[2] OpenSSL构建有线程功能,除非用户指定
无线程
。密钥线程方案的值可能是
(未知)
,在这种情况下,用户必须为
配置
提供一些编译标志