如何使用 linux 发行版在 c 中使用 API:ubuntu 16.04

How to use an API in c using linux distro: ubuntu 16.04

我是 linux 的初学者,我想使用某个包中的 C 语言 API。该软件包包含文件 .h(其中包含原型和一些使用 API 的定义)和 .so 文件,以及 Windows 的 .dll。但我不知道如何操纵它们以便在单个代码中正确使用此 API 。

您需要做两件事:

  1. 为 API 添加正确的 header。
  2. Link 到共享 object.

例如,要使用 libconfig:

main.c

#include <libconfig.h>

int main(int argc, char * argv[])
{
  config_t cfg;

  config_init(&cfg);
  config_read_file(&cfg, "example.conf");

  return 0;
}

包含的 header 定义了 API 原型,但不执行实际的 linking,因为你需要告诉编译器 link 到图书馆。

gcc main.c -o main -lconfig

这个过程会根据你打算使用的库而有所不同,对于大多数人来说,现在你可以使用 pkg-config 实用程序来为编译器提供正确的包含和 linker 选项,对于示例:

pkg-config --cflags libconfig
pkg-config --libs libconfig

CFLAGS 和 LIBS 是分开的,因为通常您需要编译 object 个文件,然后 link,例如:

gcc -c $(pkg-config --cflags libconfig) main.c -o main.o
gcc main.o -o main $(pkg-config --libs libconfig)

注意:libconfig 没有任何 CFLAGS,但大多数库都有,这些通常是它们 header 的路径。