编译源码包时,我得到了一个错误make
,看起来像:
In file included from foo.c:28:0:
bar.h:23:18: fatal error: bar.h: No such file or directory
#include <bar.h>
^
compilation terminated.
make[x]: *** [baz] Error 1
make[x]: Leaving directory
我该如何处理?
这通常表示您还没有安装您正在尝试编译的程序的某些依赖项。根据有问题的头文件和您要编译的程序,您有几个选择:
目标软件存在于 Ubuntu 存储库中
有时你想从源代码编译 Ubuntu 已经提供的包(可能是为了获得不同的版本,或者打补丁)。如果软件没有太大变化,你可以使用
apt
获取依赖项:这应该安装构建该软件的 Ubuntu 包所需的所有包(可能比您的源包实际需要的包更少或更多)。
apt
如果您只需要对源代码进行一些小的更改,或者应用一个补丁,您甚至可以通过让dpkg
这些跑腿工作来节省大量的精力:这将下载包的源文件,包括制作包所需的一切。这些文件将位于名为
<package-name>-<some-version>
. 输入它,进行所有你想要的更改,然后执行:这会在父目录 ( )中创建未签名的二进制包
cd ..
。然后您可以使用dpkg
来安装这些包:例子:
Ubuntu 存储库中不存在目标软件
如果缺少特定的头文件,您仍然可以试试运气。使用Ubuntu 包索引(搜索包内容的选项)或
apt-file
搜索文件。有时多个包可能会提供类似命名的文件,在这种情况下,更喜欢:/usr/include
。uname -m
了解您的体系结构是什么)。README
和INSTALL
文件(如果存在)。-dev
,通常包含编译所需的标头。请参阅:如何找到提供文件的包?