Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 通过g+链接到外部静态库+;_C++ - Fatal编程技术网

C++ 通过g+链接到外部静态库+;

C++ 通过g+链接到外部静态库+;,c++,C++,我正试图使用Macbook上的终端执行名为“palindrome.cpp”的cpp文件。此cpp文件使用名为“libStanfordCPPLib.a”的外部库,该库位于“目录到cpp文件/StanfordCPPLib”下,并且此库的相应头文件位于此“StanfordCPPLib”文件夹中。 您可以通过此屏幕截图查看文件夹结构: 我编译此源代码的代码是: g++-4.8 -Wall -I/Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib

我正试图使用Macbook上的终端执行名为“palindrome.cpp”的cpp文件。此cpp文件使用名为“libStanfordCPPLib.a”的外部库,该库位于“目录到cpp文件/StanfordCPPLib”下,并且此库的相应头文件位于此“StanfordCPPLib”文件夹中。
您可以通过此屏幕截图查看文件夹结构:

我编译此源代码的代码是:

g++-4.8 -Wall -I/Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib -L/Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib palindrome.cpp libStanfordCPPLib.a
据我所知,-I代表头文件所在的目录路径,-L代表库(.a文件)所在的目录路径。这就是为什么-I和-L都是相同的目录路径“/Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib”

但是,执行此命令会返回一个错误:“libStanfordCPPLib.a:没有这样的文件或目录”。如屏幕截图所示:


有人知道为什么会这样吗?谢谢。

尝试使用-lStanfordCPPLib:

g++-4.8 -Wall -I/Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib -L/Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib palindrome.cpp -lStanfordCPPLib

请使用-lStanfordCPPLib尝试以下操作:

g++-4.8 -Wall -I/Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib -L/Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib palindrome.cpp -lStanfordCPPLib

尝试执行相同的命令,从库的名称“StanfordCPPLib.a”或“stanfordcppp.a”中删除部分“lib”。。因为据我所知,链接器会在搜索库之前用lib前缀和后缀你的库名。不,它仍然不能工作。错误消息是“error:StanfordCPP.a:没有这样的文件或目录”,您是否尝试使用StanfordCPPLib.a?您好,我已通过将LibStanfordCPPLib.a更改为-lStanfordCPPLib解决了这个问题。然后,它可以执行相同的命令,从库的名称“StanfordCPPLib.a”或“stanfordcppp.a”中删除部分“lib”。。因为据我所知,链接器会在搜索库之前用lib前缀和后缀你的库名。不,它仍然不能工作。错误消息是“error:StanfordCPP.a:没有这样的文件或目录”,您是否尝试使用StanfordCPPLib.a?您好,我已通过将LibStanfordCPPLib.a更改为-lStanfordCPPLib解决了这个问题。然后它就可以编译了。现在就可以编译了。然而,我收到一条警告:“忽略文件/Users/lihang/Downloads/CS106B/palindrome/stanfordcplib/libstanfordcplib.a,文件是为归档而构建的,而归档不是链接的体系结构(x86_64):/Users/lihang/Downloads/CS106B/palindrome/stanfordcplib/libstanfordcplib.a”我会弄明白的。非常感谢。警告说该库是为x86(32位)计算机构建的。您的计算机是64位的,因此无法使用为32位编译的二进制文件。您可以自己从源代码处编译库,或者获取连接的正确可执行文件,因为我可以在Xcode上运行此程序。然后,您可能在系统中安装了32位库。祝你好运现在可以编译了。然而,我收到一条警告:“忽略文件/Users/lihang/Downloads/CS106B/palindrome/stanfordcplib/libstanfordcplib.a,文件是为归档而构建的,而归档不是链接的体系结构(x86_64):/Users/lihang/Downloads/CS106B/palindrome/stanfordcplib/libstanfordcplib.a”我会弄明白的。非常感谢。警告说该库是为x86(32位)计算机构建的。您的计算机是64位的,因此无法使用为32位编译的二进制文件。您可以自己从源代码处编译库,或者获取连接的正确可执行文件,因为我可以在Xcode上运行此程序。然后,您可能在系统中安装了32位库。祝你好运