【问题标题】:I am trying to compile my c program using cygwin gcc but I get an error when I try to do so [closed]我正在尝试使用 cygwin gcc 编译我的 c 程序,但是当我尝试这样做时出现错误 [关闭]
【发布时间】:2018-01-11 05:48:29
【问题描述】:

当我尝试编译我的脚本时,我得到了错误:

/usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: cannot find -lecc

collect2:错误:ld 返回 1 个退出状态 make: *** [Makefile:9: sample] 错误 1

####################################

    HEADERS = eccapi.h

    default: sample

    sample.o: sample.c $(HEADERS)
        gcc -c sample.c -o sample.o

    sample: sample.o
        gcc sample.o -o sample -I./ -lecc

    clean:
        -rm -f sample.o
        -rm -f sample
#
/*After Add libecc.a file in the lib folder of my compiler, I'm getting some other error, below are the error */

    $ make
    gcc -c sample.c -o sample.o
    sample.c: In function ‘crypto_main’:
    sample.c:173:13: warning: implicit declaration of function ‘emberSerialGuaranteedPrintf’ [-Wimplicit-function-declaration]
                 emberSerialGuaranteedPrintf(APP_SERIAL, "ZSE_ECCGenerateKey ERROR 0x%x\n",rc);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    gcc sample.o -o sample -I./ -lecc
    /usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: skipping incompatible /usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../libecc.a whe                    n searching for -lecc
    /usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: skipping incompatible /usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../libecc.a whe                    n searching for -lecc
    /usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: skipping incompatible /usr/lib/libecc.a when searching for -lecc
    /usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: skipping incompatible /usr/lib/libecc.a when searching for -lecc
    /usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: skipping incompatible /usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../libecc.a whe                    n searching for -lecc
    /usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: skipping incompatible /usr/lib/libecc.a when searching for -lecc
    /usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: cannot find -lecc
    collect2: error: ld returned 1 exit status
    make: *** [Makefile:9: sample] Error 1

【问题讨论】:

  • 显示你的 exact 编译命令。那是什么 -lecc ?您要链接哪个库?那个文件在哪里?
  • 不要评论您自己的问题,而是编辑您的问题以改进它。显示一些minimal reproducible example。考虑在您的问题中以格式化文本的形式显示您的 Makefile
  • 您是否将 libecc.a 复制到 /usr/lib?使用 objdump 或类似命令查看这是否适合您的 CPU,可能是 32 位 64 位问题。

标签: c static-linking


【解决方案1】:

您是在告诉编译器链接“libecc.a”。要么你的编译器的“lib”文件夹中没有这个库,要么你的编译器所在的路径中没有这个库。尝试将 -L 添加到您的链接步骤或检查您的 lib 文件夹并确保您拥有该库。

UPD
另请注意,error: ld returned 1 exit status 错误来自链接器。您可以检查您需要的库ecc是否已安装like this

ldconfig -p | grep libecc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 2022-11-13
    • 1970-01-01
    • 2014-04-05
    相关资源
    最近更新 更多