Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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
Cmake Android NDK构建在添加FFmpeg后失败,错误为:找不到-lnative 首先,我在Android和C++上构建本地代码是相当新的,所以我可能错过了一些更为成熟的开发人员非常明显的东西……_Cmake_Android Ndk - Fatal编程技术网

Cmake Android NDK构建在添加FFmpeg后失败,错误为:找不到-lnative 首先,我在Android和C++上构建本地代码是相当新的,所以我可能错过了一些更为成熟的开发人员非常明显的东西……

Cmake Android NDK构建在添加FFmpeg后失败,错误为:找不到-lnative 首先,我在Android和C++上构建本地代码是相当新的,所以我可能错过了一些更为成熟的开发人员非常明显的东西……,cmake,android-ndk,Cmake,Android Ndk,我正在开发一款用于音频处理的Android应用程序。到目前为止,这一切都是有效的,我设置了NDK,添加了一个CMakeLists.txt,编译了我的代码并运行了应用程序,一切都很好 现在,我尝试按照本文描述的步骤将FFmpeg集成到我的项目中:。我使用这里提供的脚本编译FFmpeg,并将文件移动到提到的文件夹中。我对CMakeList.txt进行了更改,以便能够使用已编译的FFmpeg文件,IDE可以很好地查看所有内容 但我的构建因以下错误而中断: Users/myuserfolder/Libr

我正在开发一款用于音频处理的Android应用程序。到目前为止,这一切都是有效的,我设置了NDK,添加了一个CMakeLists.txt,编译了我的代码并运行了应用程序,一切都很好

现在,我尝试按照本文描述的步骤将FFmpeg集成到我的项目中:。我使用这里提供的脚本编译FFmpeg,并将文件移动到提到的文件夹中。我对CMakeList.txt进行了更改,以便能够使用已编译的FFmpeg文件,IDE可以很好地查看所有内容

但我的构建因以下错误而中断:

Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lnative
我在谷歌上做了一些搜索和研究,但似乎没有弄明白。不知道这里到底缺少什么,在哪里可以得到它…非常感谢任何帮助

这是我的CMakeList.txt


set(FFMPEG_DIR /volumes/work/repos/android/ffmpeg/build/${ANDROID_ABI})

include_directories(src/main/cpp/)
include_directories(native-lib ${FFMPEG_DIR}/include)

add_library(avformat SHARED IMPORTED)
set_target_properties(avformat PROPERTIES IMPORTED_LOCATION
       ${FFMPEG_DIR}/lib/libavformat.so)
add_library(avutil SHARED IMPORTED)
set_target_properties(avutil PROPERTIES IMPORTED_LOCATION
       ${FFMPEG_DIR}/lib/libavutil.so)
add_library(avcodec SHARED IMPORTED)
set_target_properties(avcodec PROPERTIES IMPORTED_LOCATION
       ${FFMPEG_DIR}/lib/libavcodec.so)
add_library(swresample SHARED IMPORTED)
set_target_properties(swresample PROPERTIES IMPORTED_LOCATION
       ${FFMPEG_DIR}/lib/libswresample.so)


add_library(native-lib

       SHARED

       src/main/cpp/native-lib.cpp
       src/main/cpp/AudioEngine.cpp
       src/main/cpp/DataSource.h
       src/main/cpp/StorageDataSource.cpp
       src/main/cpp/LockFreeQueue.h
       src/main/cpp/logging.h
       src/main/cpp/NDKExtractor.cpp
       src/main/cpp/Constants.h
       src/main/cpp/OpenGLFunctions.cpp
       src/main/cpp/Player.cpp
       src/main/cpp/Mixer.h
       src/main/cpp/IRenderableAudio.h
       src/main/cpp/UtilityFunctions.cpp
       src/main/cpp/FFMpegExtractor.h
       src/main/cpp/FFMpegExtractor.cpp
       )

set(TARGET_LIBS log android oboe GLESv2)

set(TARGET_LIBS ${TARGET_LIBS} native avformat avutil avcodec swresample)

target_link_libraries(native-lib ${TARGET_LIBS})

#set(CMAKE_CXX_STANDARD 14)

# Set the path to the Oboe directory.
set(OBOE_DIR /Volumes/Work/Repos/Android/oboe-test/oboe)

# Add the Oboe library as a subdirectory.
add_subdirectory(${OBOE_DIR} ./oboe)


# Specify the path to the Oboe header files.
include_directories(${OBOE_DIR}/include)


这是本机生成任务日志输出的结束部分(完整日志太大,无法发布):


为什么要将
native
添加到
target\u link\u libraries
语句中?它不在你链接的文章中,也不在你的CMake文件中定义。你是对的。它不属于那里,它也导致了错误。不知道这是怎么结束的,但当我把它移除时,一切都按预期进行。谢谢你指出这一点!因为这是一个评论,所以我不能将其标记为可接受的答案。。。
Build native-lib_armeabi-v7a

(...)

[38/41] /Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++  --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot  -DOBOE_ENABLE_LOGGING=1 -Dnative_lib_EXPORTS -I../../../../src/main/cpp -I../../../../native-lib -I/volumes/work/repos/android/ffmpeg/build/armeabi-v7a/include -I/Volumes/Work/Repos/Android/oboe-test/oboe/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -march=armv7-a -mthumb -Wa,--noexecstack -Wformat -Werror=format-security  -std=c++14 -frtti -fexceptions -O0 -fno-limit-debug-info  -fPIC -MD -MT CMakeFiles/native-lib.dir/src/main/cpp/Player.cpp.o -MF CMakeFiles/native-lib.dir/src/main/cpp/Player.cpp.o.d -o CMakeFiles/native-lib.dir/src/main/cpp/Player.cpp.o -c /Volumes/Work/Repos/Android/MyApp/app/src/main/cpp/Player.cpp
[39/41] /Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++  --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot  -DOBOE_ENABLE_LOGGING=1 -Dnative_lib_EXPORTS -I../../../../src/main/cpp -I../../../../native-lib -I/volumes/work/repos/android/ffmpeg/build/armeabi-v7a/include -I/Volumes/Work/Repos/Android/oboe-test/oboe/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -march=armv7-a -mthumb -Wa,--noexecstack -Wformat -Werror=format-security  -std=c++14 -frtti -fexceptions -O0 -fno-limit-debug-info  -fPIC -MD -MT CMakeFiles/native-lib.dir/src/main/cpp/UtilityFunctions.cpp.o -MF CMakeFiles/native-lib.dir/src/main/cpp/UtilityFunctions.cpp.o.d -o CMakeFiles/native-lib.dir/src/main/cpp/UtilityFunctions.cpp.o -c /Volumes/Work/Repos/Android/MyApp/app/src/main/cpp/UtilityFunctions.cpp
[40/41] /Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++  --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot  -DOBOE_ENABLE_LOGGING=1 -Dnative_lib_EXPORTS -I../../../../src/main/cpp -I../../../../native-lib -I/volumes/work/repos/android/ffmpeg/build/armeabi-v7a/include -I/Volumes/Work/Repos/Android/oboe-test/oboe/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -march=armv7-a -mthumb -Wa,--noexecstack -Wformat -Werror=format-security  -std=c++14 -frtti -fexceptions -O0 -fno-limit-debug-info  -fPIC -MD -MT CMakeFiles/native-lib.dir/src/main/cpp/FFMpegExtractor.cpp.o -MF CMakeFiles/native-lib.dir/src/main/cpp/FFMpegExtractor.cpp.o.d -o CMakeFiles/native-lib.dir/src/main/cpp/FFMpegExtractor.cpp.o -c /Volumes/Work/Repos/Android/MyApp/app/src/main/cpp/FFMpegExtractor.cpp
[41/41] : && /Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++  --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -march=armv7-a -mthumb -Wa,--noexecstack -Wformat -Werror=format-security  -std=c++14 -frtti -fexceptions -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack -shared -Wl,-soname,libnative-lib.so -o ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libnative-lib.so CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/AudioEngine.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/StorageDataSource.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/NDKExtractor.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/OpenGLFunctions.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/Player.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/UtilityFunctions.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/FFMpegExtractor.cpp.o  -llog -landroid oboe/liboboe.a -lGLESv2 -lnative /volumes/work/repos/android/ffmpeg/build/armeabi-v7a/lib/libavformat.so /volumes/work/repos/android/ffmpeg/build/armeabi-v7a/lib/libavutil.so /volumes/work/repos/android/ffmpeg/build/armeabi-v7a/lib/libavcodec.so /volumes/work/repos/android/ffmpeg/build/armeabi-v7a/lib/libswresample.so -llog -lOpenSLES -latomic -lm && :
FAILED: : && /Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++  --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -march=armv7-a -mthumb -Wa,--noexecstack -Wformat -Werror=format-security  -std=c++14 -frtti -fexceptions -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack -shared -Wl,-soname,libnative-lib.so -o ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libnative-lib.so CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/AudioEngine.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/StorageDataSource.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/NDKExtractor.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/OpenGLFunctions.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/Player.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/UtilityFunctions.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/FFMpegExtractor.cpp.o  -llog -landroid oboe/liboboe.a -lGLESv2 -lnative /volumes/work/repos/android/ffmpeg/build/armeabi-v7a/lib/libavformat.so /volumes/work/repos/android/ffmpeg/build/armeabi-v7a/lib/libavutil.so /volumes/work/repos/android/ffmpeg/build/armeabi-v7a/lib/libavcodec.so /volumes/work/repos/android/ffmpeg/build/armeabi-v7a/lib/libswresample.so -llog -lOpenSLES -latomic -lm && :
/Users/myuserfolder/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lnative
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.