gpt4 book ai didi

c - x86_64-pc-cygwin gcc编译错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:45 24 4
gpt4 key购买 nike

谁能帮我找出这个错误。

我正在尝试编译一个测试程序,它给出了这个错误/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/../../../../x86_64-pc-cygwin/bin/ld: 找不到 -ltest .

我给出了正确的 lib cc test.c -I"./include"-L"./Lib"-ltest 路径,它仍然抛出错误。库存在于提到的文件夹中。

我尝试了太多这里讨论的东西,但没有任何帮助。

最佳答案

在 Cygwin 上,您应该能够构建一个库来生成适当的共享对象,例如:

gcc -shared -o libtest.so -Wl,--out-implib,libtest.dll.a libtest.c

libtest.c 将是您的 .c 文件的名称或用于构建您的库的 .c 文件的列表。

这应该产生一个 libtest.dll.alibtest.so 。您使用导入库将您的程序链接到共享对象。所以你可以编译你的应用程序:

gcc test.c -I./include -LLib/ -ltest

Lib/libtest.dll.a 是一个库(导入库),它知道如何在运行时加载 .so 文件。

要更像 Windows,您可以删除 .so 后缀并使用 .dll。因此,以这种方式编译您的共享对象也可以:

gcc -shared -o libtest.dll -Wl,--out-implib,libtest.dll.a libtest.c

然后像上面那样编译客户端(测试):

gcc test.c -I./include -LLib/ -ltest

因为您使用 -o libtest.dll 编译了上面的共享库,所以创建的导入库现在将搜索 libtest.dll 而不是 libtest。所以当你的程序被执行时。

请注意,在运行时 Windows 会在您的路径中搜索共享对象(或 dll)。因此,您必须将共享对象(或 dll)移动到您运行应用程序的目录;或将您的共享对象 (dll) 复制到路径中的某处;或将您的 ./Lib/ 目录添加到您的路径。

关于c - x86_64-pc-cygwin gcc编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26204049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com