首页 > 解决方案 > 为什么在尝试编译 C 文件时出现链接器错误?

问题描述

我已经有这个错误好几个星期了,我已经发了一篇关于它的帖子,但不是很清楚。
所以我从头文件 myBmpGris.h 调用一个函数,这些函数在文件 myBmpGris.c 上实现。这是我的主要文件:

#include<stdio.h>
#include<stdlib.h>
#include "myBmpGris.h"

int main(){

    char * image_name = "image_carre.bmp";
    BmpImg image = readBmpImage(image_name);

 return 0;


我使用编译ggc main.c并收到此错误消息:

架构 x86_64 的未定义符号:
“_readBmpImage”,引用自:
main-1c453a.o 中的 _main
ld:未找到架构 x86_64
clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

我阅读了很多关于相同错误消息的帖子,但似乎没有一个答案适用于我的情况。我有点绝望,因为我的很多程序都给了我同样的错误。我应该怎么办 ?

标签: cgcclinkerclang

解决方案


有两件事。

  1. 您已包含的编译。h 文件。这意味着编译器将为包含库中所有使用的函数在符号表中进行条目。

  2. 在此处链接链接器尝试从库中获取地址以填充在第一步中创建的符号表。在您的情况下无法执行此操作。所以给出库的完整路径。


推荐阅读