美好的一天,
我有一个要编译的文件,并且其中包含#include到静态链接的二进制文件。
#!/bin/bash
g++ -Wall -std=c++17 Message.cpp ../textmagic-rest-cpp/lib/libtextmagic.a
我收到以下错误:严重错误:libtextmagic.h:没有这样的文件或目录
在当前工作目录是在其中调用/运行脚本的目录的假设下,我提供的相对路径是正确的。我可能链接的二进制文件不正确,并且已经在Internet上搜索了,但是其他帖子/资源没有帮助我。
请注意,脚本与Message.cpp
在同一目录中运行。
答案 0 :(得分:3)
g++
具有-I
和-L
标志为您做到这一点。您的标志将如下所示:-I/ThePathToYourHeaders
和-L/ThePathToYourLib
。我不知道g++
是否支持那里的相对路径,但是绝对路径可以保证在那里工作。
还可能需要添加链接器标志。对于您的项目,它将为-ltextmagic
。它只是您要链接的.a
文件的名称,文件名前没有lib
。
答案 1 :(得分:1)
#include
指令需要“读取”您作为参数提供的头文件,并且该文件不包含在静态库中。
您可以包括使用源文件的相对路径,也可以使用-I
参数将头文件的位置传递给编译器。