gpt4 book ai didi

android - 即使 MakeFile 包含其目标文件,也不会添加来自 C 文件的符号

转载 作者:行者123 更新时间:2023-12-04 22:45:04 38 4
gpt4 key购买 nike

我正在尝试用这个 MAKEFILE 构建 libavformat .虽然 makefile 包含 avio.o文件,但它没有为头文件 url.h 上声明的函数添加任何符号.包含 avio.c, avio.h and url.h 的源文件夹文件可以找到HERE .avio.o 的 nm 命令返回nm: avio.o: File format not recognizedfile命令 avio.o显示以下输出

avio.o: LLVM IR bitcode
我检查了生成的 libavformat.so 上的 nm 命令,并没有找到在 url.h 上声明的函数的任何符号。文件
我已经坚持了两天了。无法弄清楚如何解决这个问题!
调用 ff_check_interrupt方法和结果

undefined reference to 'ff_check_interrupt'


配置和标志。
  • FFmpeg 配置文件:Config.h
  • FFmpeg 根 MakeFile:Root MakeFile
  • CC、CXX、CFLAGS、LDFLAGS:FLAGS
  • 最佳答案

    首先,url.h 声明的函数应在 url.c 中定义,不在 avio.c 中.
    二是唯一使用ff_check_interruptavoi.c位于静态内联函数中,因此工具链确实可能会优化此符号。
    我认为您正在发生的事情是工具链决定仅在此编译单元中使用它。
    移动 ff_check_interrupt 的定义到 'url.c' 应该可以解决问题。虽然这是一个图书馆,所以你无法控制。
    然而,这并不能回答为什么 thousands of users on Github在他们的代码中有这个相同的库。我建议将您的 Makefile 与那些进行比较(例如,第一次搜索返回是 this one

    关于android - 即使 MakeFile 包含其目标文件,也不会添加来自 C 文件的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65882949/

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