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

C++11 致命错误-没有这样的文件或目录,c++11,ubuntu,compiler-errors,x86-64,libcds,C++11,Ubuntu,Compiler Errors,X86 64,Libcds,我已使用命令/build.sh-b64-z'-std=c++0x'-l'-l/usr/lib/x86_64-linux-gnu'-在build文件夹中使用boost/usr/include/boost--amd64-use-128bit安装了cds库 在我试图编译src文件夹的示例init.cpp之后,我在terminal:g++init.cpp-o init中键入了这个,终端显示:致命错误:cds/init.h:没有这样的文件或目录 在这种情况下,我应该为编译命令做什么? 谢谢。对于此类情况下

我已使用命令
/build.sh-b64-z'-std=c++0x'-l'-l/usr/lib/x86_64-linux-gnu'-在
build
文件夹中使用boost/usr/include/boost--amd64-use-128bit
安装了cds库

在我试图编译
src
文件夹的示例
init.cpp
之后,我在terminal:
g++init.cpp-o init
中键入了这个,终端显示:
致命错误:cds/init.h:没有这样的文件或目录

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

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

find / -path '*/cds/init.h' 2>/dev/null
然后需要向g++提供两个参数:

第一种方法是让编译器从安装目录中了解include文件

-I路径\到\文件夹\一个\步骤\在\ CD \文件夹上方

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

find / -name libcds.so 2>/dev/null
因此,对于链接,您需要提供标志

-L指向文件夹的路径在libcds.so上方一步

在您的例子中,您可能不需要-L标志,因为您的大多数库都应该是只包含头的

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

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

echo LDFLAGS=$LDFLAGS
echo CFLAGS=$CFLAGS
echo CXXFLAGS=$CXXFLAGS

在编译和链接该库时,可能需要将所有这些选项传递给g++。LDFLAGS仅特定于链接器。另外两个都是编译C++文件所需要的。

是'-L/Ur/iB/x86y64-LIUX-GNU '只是一个排字吗?(您可能是指'-L/usr/lib/x86_64-linux-gnu')谢谢您的更正。您是安装了
libcds
还是刚刚构建了它?你能确认
cds/init.h
是否在
/usr/include
目录中吗?我找不到
cds
文件夹。那么命令
/build.sh-b64-z'-std=c++0x'-l'-l/usr/lib/x86_64-linux-gnu'-with boost/usr/include/boost--amd64-use-128bit
不适合安装吗?正如名字所暗示的那样,脚本构建了它。您仍然需要安装它。如果
build.sh
成功创建了
Makefile
,则通常使用
makeinstall
完成。