gpt4 book ai didi

c++ - cmake 构建 .so 库

转载 作者:行者123 更新时间:2023-11-28 04:42:56 24 4
gpt4 key购买 nike

我的 CMakeLists.txt 在这里。

cmake_minimum_required(VERSION 3.9)
project(iemoji-lab)
set(CMAKE_CXX_STANDARD 14)

SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)


add_executable(
util
src/util/util.cpp
)

target_link_libraries(
util
avformat
)

构建后,我得到了util 可执行文件。如您所见,我必须将 util 与 ffmepg 中的 avformat 链接起来。

现在我想构建一个名为 libiemoji.so 文件。

我已经试过了。

cmake_minimum_required(VERSION 3.9)
project(iemoji-lab)
set(CMAKE_CXX_STANDARD 14)

add_library(
libiemoji
SHARED
src/util/util.cpp
)

但是我得到了错误。

Undefined symbols for architecture x86_64: "_av_register_all", referenced from: GetFrameCount(char const*) in util.cpp.o "_avformat_alloc_context", referenced from: GetFrameCount(char const*) in util.cpp.o "_avformat_close_input", referenced from: GetFrameCount(char const*) in util.cpp.o "_avformat_free_context", referenced from: GetFrameCount(char const*) in util.cpp.o "_avformat_open_input", referenced from: GetFrameCount(char const*) in util.cpp.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) gmake[2]: * [CMakeFiles/libiemoji.dir/build.make:95: liblibiemoji.dylib] Error 1 gmake[1]: * [CMakeFiles/Makefile2:68: CMakeFiles/libiemoji.dir/all] Error 2 gmake: *** [Makefile:84: all] Error 2

那么如何生成.so库呢?

编辑

@Mario 点后,我得到了没有错误的解决方案。

cmake_minimum_required(VERSION 3.9)
project(iemoji-lab)
set(CMAKE_CXX_STANDARD 14)

SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)

add_library(
iemoji
SHARED
src/util/util.cpp
)

target_link_libraries(
iemoji
avformat
)

现在我得到了一个文件libiemoji.dyib。我对此感到困惑,因为我想生成一个扩展名为 .so 的文件。

最佳答案

你已经做对了,你只是忘记了链接库。复制 target_link_libraries() 应该没问题。

关于c++ - cmake 构建 .so 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49838458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com