如何在 Ubuntu 中使用 apt 安装 #include <whatever.h>
How to #include <whatever.h> installed with apt in Ubuntu
我刚刚按照说明在我的 Ubuntu 20.04 中安装了 hidapi,即通过
sudo apt install libhidapi-dev
我在文件 mwe.cpp
中编写了我的程序,其中仅包含这一行:
#include <hidapi.h>
现在我想用
编译它
g++ -o mwe.o mwe.cpp
但我明白了
mwe.cpp:1:10: fatal error: hidapi.h: No such file or directory
我该如何使用这个模块?很抱歉这么基本的问题,但找不到。
如果 header 不在 header 的标准搜索路径中,那么您可以使用 -I
标志手动包含它,例如
g++ -I/usr/include/hidapi -o mwe.o mwe.cpp
要在 ubuntu 上查找文件,您可以 运行:
sudo updatedb
locate hidapi.h
> /usr/include/hidapi/hidapi.h
您可以通过以下方式查看标准包含搜索路径:
gcc -print-search-dirs
或者,因为 /usr/include
在标准搜索路径上,您可以将包含写为 <hidapi/hidapi.h>
。
How to #include <whatever.h> installed with apt in Ubuntu
如果软件包将 header 安装在包含在编译器默认搜索路径中的目录中(这很典型),那么您可以使用从根目录开始的相对路径来包含 header安装 header 的搜索路径。例如,如果文件在路径 /usr/include/x/y.h
中,那么您可以包含 <x/y.h>
.
如果包没有在默认搜索路径中安装 header,那么您必须在调用它时指定编译器的搜索路径,然后包含 header 相对于指定的包含目录。例如,如果文件在路径 /opt/custom/x/y.h
中,则可以包含 <x/y.h>
并指定 /opt/custom
作为编译器的搜索路径。
如果您使用 GCC 或兼容的编译器,并且包支持它,那么您可以使用一个名为 pkg-config
的程序来获取使用该库所需的编译器选项。除了 header 搜索路径,这还负责与库的链接以及任何强制编译器选项。示例:
pkg-config --libs --cflags libhidapi
I don't know, how do I find the location of hidapi.h?
有几种方法可以找出文件的位置。通用工具是程序find
。示例:
find / -name=hidapi.h
一个更具体的用于了解 apt 包安装的文件路径的工具是 apt-file
。或者,您可以在 https://packages.ubuntu.com/ 网站中查找文件列表。
在基于 Ubuntu 的系统上,系统包 libhidapi-dev
将包含文件安装到 /usr/include/hidapi
,因此请在命令行中包含此 (-I/usr/include/hidapi
) 或 #include <hidapi/hidapi.h>
我刚刚按照说明在我的 Ubuntu 20.04 中安装了 hidapi,即通过
sudo apt install libhidapi-dev
我在文件 mwe.cpp
中编写了我的程序,其中仅包含这一行:
#include <hidapi.h>
现在我想用
编译它g++ -o mwe.o mwe.cpp
但我明白了
mwe.cpp:1:10: fatal error: hidapi.h: No such file or directory
我该如何使用这个模块?很抱歉这么基本的问题,但找不到。
如果 header 不在 header 的标准搜索路径中,那么您可以使用 -I
标志手动包含它,例如
g++ -I/usr/include/hidapi -o mwe.o mwe.cpp
要在 ubuntu 上查找文件,您可以 运行:
sudo updatedb
locate hidapi.h
> /usr/include/hidapi/hidapi.h
您可以通过以下方式查看标准包含搜索路径:
gcc -print-search-dirs
或者,因为 /usr/include
在标准搜索路径上,您可以将包含写为 <hidapi/hidapi.h>
。
How to #include <whatever.h> installed with apt in Ubuntu
如果软件包将 header 安装在包含在编译器默认搜索路径中的目录中(这很典型),那么您可以使用从根目录开始的相对路径来包含 header安装 header 的搜索路径。例如,如果文件在路径 /usr/include/x/y.h
中,那么您可以包含 <x/y.h>
.
如果包没有在默认搜索路径中安装 header,那么您必须在调用它时指定编译器的搜索路径,然后包含 header 相对于指定的包含目录。例如,如果文件在路径 /opt/custom/x/y.h
中,则可以包含 <x/y.h>
并指定 /opt/custom
作为编译器的搜索路径。
如果您使用 GCC 或兼容的编译器,并且包支持它,那么您可以使用一个名为 pkg-config
的程序来获取使用该库所需的编译器选项。除了 header 搜索路径,这还负责与库的链接以及任何强制编译器选项。示例:
pkg-config --libs --cflags libhidapi
I don't know, how do I find the location of hidapi.h?
有几种方法可以找出文件的位置。通用工具是程序find
。示例:
find / -name=hidapi.h
一个更具体的用于了解 apt 包安装的文件路径的工具是 apt-file
。或者,您可以在 https://packages.ubuntu.com/ 网站中查找文件列表。
在基于 Ubuntu 的系统上,系统包 libhidapi-dev
将包含文件安装到 /usr/include/hidapi
,因此请在命令行中包含此 (-I/usr/include/hidapi
) 或 #include <hidapi/hidapi.h>