无法将静态二进制文件链接到#include它

时间:2019-11-09 22:13:45

标签: c++ linker g++

美好的一天,

我有一个要编译的文件,并且其中包含#include到静态链接的二进制文件。

#!/bin/bash

g++ -Wall -std=c++17 Message.cpp ../textmagic-rest-cpp/lib/libtextmagic.a

我收到以下错误:严重错误:libtextmagic.h:没有这样的文件或目录

在当前工作目录是在其中调用/运行脚本的目录的假设下,我提供的相对路径是正确的。我可能链接的二进制文件不正确,并且已经在Internet上搜索了,但是其他帖子/资源没有帮助我。

请注意,脚本与Message.cpp在同一目录中运行。

2 个答案:

答案 0 :(得分:3)

g++具有-I-L标志为您做到这一点。您的标志将如下所示:-I/ThePathToYourHeaders-L/ThePathToYourLib。我不知道g++是否支持那里的相对路径,但是绝对路径可以保证在那里工作。

还可能需要添加链接器标志。对于您的项目,它将为-ltextmagic。它只是您要链接的.a文件的名称,文件名前没有lib

答案 1 :(得分:1)

#include指令需要“读取”您作为参数提供的头文件,并且该文件不包含在静态库中。

您可以包括使用源文件的相对路径,也可以使用-I参数将头文件的位置传递给编译器。