为什么在编译过程中尽管有 -I(破折号大写 i)标志,但仍会出现未定义的引用错误?
Why undefined reference error despite -I (dash capital i) flag during compilation?
我正在编译使用外部库https://www.cs.cmu.edu/afs/cs/project/quake/public/www/triangle.html
的代码。 所有三角形源文件和目标文件都在 ~/triangle/文件夹中。所以我像这样编译:
g++ -g sobel_aot_run.cpp sobel_x_out.a sobel_y_out.a support.a -ljpeg -lpng -std=c++11 -I ../include -I ../tools -I ~/triangle -lpthread -ldl -o sobel
即使我指定了-I ~/triangle
,运行此命令也会给出以下错误:
/tmp/cc9AUEre.o: In function `main':
/home/zendevil/Halide/tutorial/sobel_aot_run.cpp:74: undefined reference to `triangulate(char*, triangulateio*, triangulateio*, triangulateio*)'
collect2: error: ld returned 1 exit status
如何编译?
-I
仅向编译器指定您在目录中搜索文件以满足#include
语句。
现在需要编译并链接到正在使用的triangulate
代码。
相关文章:
- 有关使用标志位设置内部错误标志的说明
- Clang:覆盖之前在命令行上指定的所有警告和错误警告标志
- std::function, Clang 6.0 & MSVC (10.0017134.12) - 可能的 ABI 错误或必需的编译器标志
- 为什么在编译过程中尽管有 -I(破折号大写 i)标志,但仍会出现未定义的引用错误?
- 为什么我必须将错误状态标志设置为 goodbit 才能使其工作
- C - iStream错误标志
- 链接QT5库会自动将额外的FPIC标志传递给NVCC编译器,并通过cmake Cause错误
- 安装XLNT后,具有-lxnt标志的G 错误
- 用错误的标志顺序编译后,是否删除*.cpp文件
- 可以清除流的单个错误状态标志
- std::ostringstream将标志放在错误的位置
- 为什么std::istringstream在没有引发故障位标志的情况下生成错误的结果
- 优化标志会导致计算错误
- 使用 ios::Nocreate 标志会导致"undeclared identifier"错误
- 标志 ios_base::app 的错误行为
- GCC 错误错误的 ELF 类:ELFCLASS64,尽管有 -m64 标志
- 异常是否应具有标志/消息,或者每个错误应具有异常类型
- OpenCV错误:cvGetMat中有错误的标志(参数或结构字段)(无法识别或不支持的数组类型)
- 带有DEBUG_PROCESS标志的CreateProcess会在某些可执行文件上导致错误50
- 调试使用调试标志运行的代码,并使用 opt 标志运行段错误