麻烦包括NSS头文件

时间:2014-01-26 10:15:55

标签: c++ makefile header-files nss

最近,我有这个想法开始使用Mozilla NSS并学会使用它,所以在未来的某个地方,我可以使用它,或者至少可以开始为它做出贡献。

所以我去了Website并使用mercurial将源代码克隆到导演“NSS”

然后我用了

make nss_build_all

而不是

gmake nss_build_all

注意:我不知道,如果它有所不同,gmake只是GNU Make

此make命令在nss文件夹外创建了一个dist文件夹。所以,现在我的NSS文件夹有3个文件夹nss,nspr,dist。

在.bashrc中,我在末尾添加了一行

export LD_LIBRARY_PATH=/home/ayusun/workspace/NSS/dist/Linux3.5_x86_glibc_PTH_DBG.OBJ/lib

然后我转到this示例代码,复制粘贴并将其保存在我的NSS文件夹中。 然后我试着编译它,但它失败了,说它找不到iostream.h,我去了并更改了头文件的位置

所以

<iostream.h> became <iostream>
"pk11pub.h" became "nss/lib/pk11wrap/pk11pub.h"
"keyhi.h" became "nss/lib/cryptohi/keyhi.h"
"nss.h" became "nss/lib/nss/nss.h"

我再次尝试编译,但这次错误来了,它找不到“planera.h” 它实际上存在于dist / *中.OBJ / include /是nspr中文件planeras.h的链接

所以我不知道,如何再包含这些文件。

在包含第三方标题文件时,我总是遇到麻烦。

由于

1 个答案:

答案 0 :(得分:0)

这是一个老问题,但是我还是会回答,以供将来参考。

最简单的方法就是将NSS软件包用于您的操作系统。
然后,您可以使用诸如nss-config --cflagsnss-config --libsnspr-config --cflagsnspr-config --libs之类的内容,并将它们适当地添加到CFLAGSLDFLAGS中。

对于那些决定编译自己的NSS的人,我将做一个简要的概述。

NSS标头位于dist/public中。将-I/path/to/dist/public添加到编译器命令行。 NSPR标头位于dist/Debug/include¹中,因此请将-I/path/to/dist/Debug/include添加到您的编译器命令行中。

现在您可以使用#include <nspr/prio.h>#include <nss/nss.h>和朋友。

NSS代码直接依赖于不包括NSPR头,因此您需要添加-I/path/to/dist/Debug/include/nspr才能找到类似plarena.h的内容。或者,您可以做同样的事情,而不像我上面那样为您的包含文件添加前缀。由你决定。

现在将-L/path/to/dist/Debug/lib-lnss3 -lnspr4添加到链接器命令行中。您可能还需要为运行时链接路径添加-rpath /path/to/dist/Debug/lib,或将它们复制到系统目录或使用LD_LIBRARY_PATH

我希望这可以帮助您入门。

¹这实际上取决于您的操作系统和构建类型。希望您能根据实际情况找出实际Debug目录的名称。