如何使用 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 。
您需要做两件事:
- 为 API 添加正确的 header。
- 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 的路径。
我是 linux 的初学者,我想使用某个包中的 C 语言 API。该软件包包含文件 .h(其中包含原型和一些使用 API 的定义)和 .so 文件,以及 Windows 的 .dll。但我不知道如何操纵它们以便在单个代码中正确使用此 API 。
您需要做两件事:
- 为 API 添加正确的 header。
- 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 的路径。