我已在./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
。
在这种情况下,我应该怎么做编译命令? 感谢。
答案 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 ++文件需要其他两个。