【问题标题】:Can not compile libsndfile code on ubuntu无法在 ubuntu 上编译 libsndfile 代码
【发布时间】:2020-08-10 03:12:35
【问题描述】:

这是我的第一篇文章。 我需要为我的项目处理音频,所以我决定使用 libsnfile。 我已经安装了它,但是当我尝试使用 gcc somefile.cgcc `pkg-config sndfile` somefile.c 编译任何 .c 程序时,它给了我“未定义”错误

/tmp/ccGTKZdy.o: En la función `convert_to_text': sndfile-to-text.c:(.text+0x193): referencia a `sf_readf_float' sin definir /tmp/ccGTKZdy.o: En la función `main': sndfile-to-text.c:(.text+0x37a): referencia a `sf_open' sin definir sndfile-to-text.c:(.text+0x3a7): referencia a `sf_strerror' sin definir sndfile-to-text.c:(.text+0x3e1): referencia a `sf_strerror' sin definir sndfile-to-text.c:(.text+0x45f): referencia a `sf_close' sin definir

未定义任何“sf_...”函数。 我读过我可能必须链接到图书馆,但我不知道如何。帮助。

【问题讨论】:

    标签: c ld pkg-config libsndfile


    【解决方案1】:

    只调用pkg-config sndfile 是不够的。应该是:

    gcc somefile.c "$(pkg-config --libs --cflags sndfile)" 
    

    如今,在命令替换中建议使用$() 而非反引号:https://github.com/koalaman/shellcheck/wiki/SC2006

    还要记住在你的程序中包含 libsndfile 头文件:

    #include <sndfile.h>
    

    并添加-Wall -Wextra -pedantic 选项以使编译器报告各种警告 - 修复您的代码,直到没有警告为止:

    gcc -Wall -Wextra -pedantic somefile.c "$(pkg-config --libs --cflags sndfile)" 
    

    【讨论】:

    • 感谢您的回答,但没有奏效。仍然给出同样的错误。我还能做什么?
    • 你确定你已经安装了 sndfile 吗? pkg-config --libs --cflags sndfile 说什么?
    • 我不确定它是否已完成安装。该命令返回: -I/usr/local/include -L/usr/local/lib -lsndfile
    • 好的,所以它应该可以工作。发布您执行的所有确切步骤以及您收到的错误消息。顺便说一句,将您的语言环境更改为英语。
    • 好的。我刚刚将语言环境更改为英语。我要做的是。 1. 进入 libsndfile 中的示例文件夹 2. 打开终端并输入 export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig 3. 尝试使用 gcc "$(pkg-config --libs - -cflags sndfile)" -Wall -Wextra -pedantic generate.c
    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 2017-06-03
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 2016-12-17
    相关资源
    最近更新 更多