不能 link 一个静态二进制文件来 #include 它
Can't link a static binary to #include it
美好的一天,
我有一个正在尝试编译的文件,其中有一个指向静态链接二进制文件的#include。
#!/bin/bash
g++ -Wall -std=c++17 Message.cpp ../textmagic-rest-cpp/lib/libtextmagic.a
我收到以下错误:致命错误:libtextmagic.h:没有那个文件或目录
假设当前工作目录是脚本所在的目录,我提供的相对路径是正确的called/ran。我可能错误地链接了二进制文件,我在互联网上搜索过,但另一个 posts/resources 没有帮助我。
请注意,该脚本 运行 与 Message.cpp
在同一目录中。
#include
指令需要 "read" 您给它的头文件作为参数,而这不包含在静态库中。
您可以使用源文件的相对路径包含,也可以使用 -I
参数将头文件的位置传递给编译器。
g++
有 -I
和 -L
标志可以为您做到这一点。您的标志将如下所示:-I/ThePathToYourHeaders
和 -L/ThePathToYourLib
。我不知道 g++
是否支持那里的相对路径,但保证绝对路径在那里工作。
您可能还需要添加一个 linker 标志。对于您的项目,它将是 -ltextmagic
。它只是您要 link 使用的 .a
文件的名称,文件名前面没有 lib
。
美好的一天,
我有一个正在尝试编译的文件,其中有一个指向静态链接二进制文件的#include。
#!/bin/bash
g++ -Wall -std=c++17 Message.cpp ../textmagic-rest-cpp/lib/libtextmagic.a
我收到以下错误:致命错误:libtextmagic.h:没有那个文件或目录
假设当前工作目录是脚本所在的目录,我提供的相对路径是正确的called/ran。我可能错误地链接了二进制文件,我在互联网上搜索过,但另一个 posts/resources 没有帮助我。
请注意,该脚本 运行 与 Message.cpp
在同一目录中。
#include
指令需要 "read" 您给它的头文件作为参数,而这不包含在静态库中。
您可以使用源文件的相对路径包含,也可以使用 -I
参数将头文件的位置传递给编译器。
g++
有 -I
和 -L
标志可以为您做到这一点。您的标志将如下所示:-I/ThePathToYourHeaders
和 -L/ThePathToYourLib
。我不知道 g++
是否支持那里的相对路径,但保证绝对路径在那里工作。
您可能还需要添加一个 linker 标志。对于您的项目,它将是 -ltextmagic
。它只是您要 link 使用的 .a
文件的名称,文件名前面没有 lib
。