0

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

在我尝试编译文件夹的示例init.cpp后,我在终端中输入了这个: ,终端显示:。srcg++ init.cpp -o initfatal error: cds/init.h: No such file or directory

这种情况下编译命令该怎么办?谢谢。

4

1 回答 1

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++ 文件需要其他两个。

于 2016-02-18T02:34:18.250 回答