错误致命 - 没有这样的文件或目录

时间:2016-02-18 01:12:12

标签: c++11 ubuntu compiler-errors x86-64 libcds

我已在./build.sh -b 64 -z '-std=c++0x' -l '-L /usr/lib/x86_64-linux-gnu' --with-boost /usr/include/boost --amd64-use-128bit文件夹中安装了带有build命令的cds库。

在我尝试编译init.cpp文件夹的示例src之后,我在终端中输入了此内容:g++ init.cpp -o init,终端显示:fatal error: cds/init.h: No such file or directory

在这种情况下,我应该怎么做编译命令? 感谢。

1 个答案:

答案 0 :(得分:0)

对于这种情况下的一般故障排除,我建议在系统上找到安装文件的位置(如果你的build.sh实际安装了文件)。您可以使用

找到丢失的头文件
find / -path '*/cds/init.h' 2>/dev/null

然后你需要为g ++提供两个参数:

首先让编译器知道安装目录中的包含文件

-I path_to_folder_one_step_above_cds_folder

第二个让链接器了解库的位置。如果库文件名为libcds.so,则可以通过运行

找到它
find / -name libcds.so 2>/dev/null

因此,对于链接,您提供标志

-L path_to_folder_one_step_above_libcds.so

在您的情况下,您可能不需要-L标志,因为您的大多数库应该只是标题。

更新:build.sh脚本在顶部打印出重要信息,从“使用以下选项构建:”开始。重要的位将是“编译选项:”和“链接选项:”。这些应足以解决您的具体选择。

UPDATE2:build.sh还会导出一些可能包含更多选项的标志。运行build.sh后,可以通过运行

直接打印出来
echo LDFLAGS=$LDFLAGS
echo CFLAGS=$CFLAGS
echo CXXFLAGS=$CXXFLAGS

在编译和链接该库时,您可能需要将所有这些选项传递给g ++。 LDFLAGS仅适用于链接器。编译c ++文件需要其他两个。