用 gcc 链接 libsndfile 源代码

Posted

技术标签:

【中文标题】用 gcc 链接 libsndfile 源代码【英文标题】:Link libsndfile source code with gcc 【发布时间】:2018-05-28 10:51:24 【问题描述】:

我刚刚克隆了libsndfile 并创建了program.c 文件,内容如下:

#include <stdio.h>
#include <sndfile.h>
main() 
    printf("hello world");

我的目标是让这个文件使用 gcc 编译(如果确实 sndfile.h 是正确的头文件),但是,我不擅长 c 代码和 gcc 编译器。

到目前为止,我一直在引用 gcc docs 和 libsndfile FAQ 并且无法提出解决方案。我不确定 我是否还有一个“库”来提供 gcc -l 选项。我是否需要先对 libsndfile 源代码进行某种构建过程,还是可以“链接”到 .c 文件?

到目前为止,program.c 和 libsndfile 克隆目录在同一目录下,我尝试了以下方法:

gcc 'pkg-config --cflags libsndfile' program.c -o hello
gcc 'pkg-config --cflags ./libsndfile/sndfile.pc.in' program.c -o hello

我在我的树莓派模型 B 上编码并且没有安装 libsndfile,所以我的路径上没有任何内容......也许我应该将 sndfile.pc.in 重命名为 sndfile.pc 并以某种方式将它放在我的路径上? (也不是 linux 大师!)

如果有一些你认为我应该学习的资源,请发表评论!我非常愿意接受那些足以让我弄清楚事情的答案。任何帮助将不胜感激。

【问题讨论】:

您的操作系统是否有包libsndfile-devlibsndfile1-dev?除非您需要它的特定版本,否则使用它可能比自己编译更容易。该软件包应包含一个 pkg-config 文件 sndfile.pc,其中包含您可以使用的正确设置。 有关于如何“为debian设置构建环境”的说明,其中包括我应该尝试的sudo apt install autoconf autogen automake build-essential libasound2-dev \ libflac-dev libogg-dev libtool libvorbis-dev pkg-config python 看来我需要更多地了解 GNU 构建系统 【参考方案1】:

首先确保您已安装gcc

sudo apt-get install gcc

然后,安装libsndfile1-dev:

sudo apt-get install libsndfile1-dev

我稍微修正了你的代码以避免一些警告:

#include <stdio.h>
#include <sndfile.h>

int main(void) 
  printf("hello world\n");
  return 0;

现在可以编译了:

gcc -o hello program.c

执行:

bebs@rasp:~$ ./hello                                     
hello world                                                                              
bebs@rasp:~$      

【讨论】:

获得正确的包名有时是件麻烦事,特别是如果它们似乎都有一个非常相似的名称,并且不清楚您需要哪个包名。修复了我遇到的一个完全不同的问题

以上是关于用 gcc 链接 libsndfile 源代码的主要内容,如果未能解决你的问题,请参考以下文章

使用 make 和 gcc 编译和链接来自不同目录的源代码

gcc和g++的区别解析

学习记录:gcc/g++ 编译与链接

Ubuntu的终端用GCC编译C源代码提示找不到命令?

GCC编译C源代码的四个步骤

iOS 上的 libsndfile