我有一个 /usr/lib/libtiff.so.3 作为 /usr/lib/i386-linux-gnu/libtiff.so.4.3.3的符号链接< / em>的。我需要使用一个名为 tiffio.h 的文件中声明的一些数据结构,它是上面提到的tiff库的一部分,用于处理我的c ++源代码中的.tif图像文件。 c ++源代码 mycode.cpp 如下:
#include <iostream>
#include <tiffio.h>
using namespace std;
int main(int argc, char *argv[]) {
if (argc < 2) {
cout << "USAGE: mycode <inputimage> <outputimage> "<< endl;
return (-1);
}
return 0;
}
我用以下方式用g ++编译源代码:
g++ -Wall -L/usr/lib mycode.cpp -ltiff -o mycode
我收到以下错误:
fatal error: tiffio: No such file or directory. compilation terminated.
我尝试使用以下选项来包含 tiffio.h ,但错误仍然存在。
<tiffio>, "tiffio.h", extern "C" {"tiffio.h"} and extern "C" {<tiffio.h>}
我做了什么从根本上错了吗?如何编译和链接源?
答案 0 :(得分:3)
这取决于你的tiffio.h文件的位置。 如果它位于g ++通常查找头文件的位置,则可以使用
包含它#include <tiffio.h>
如果它与.cpp文件位于同一目录中,则可以使用
包含它#include "tiffio.h"
如果它在其他地方你有两种可能性:
通过将-I pathToLocation添加到g ++调用中,将其位置添加到搜索路径
或者使用
包含它#include "pathToLocation/tiffio.h"
g ++正常搜索的导演是
/usr/local/include
libdir/gcc/target/version/include
/usr/target/include
/usr/include
如果g ++找不到库本身(.so文件),可以将它(带路径)直接添加到g ++调用中。