x86_64-pc-cygwin gcc编译错误

时间:2014-10-05 15:19:24

标签: c linux gcc

有人可以帮我弄清楚这个错误。

我正在尝试编译测试程序并且它给出了这个错误 /usr/lib/gcc/x86_64-pc-cygwin/4.8.3/../../../../x86_64-pc-cygwin/bin/ld: cannot find -ltest

我提供了正确的lib cc test.c -I"./include" -L"./Lib" -ltest路径,但仍然是抛出错误。库位于上述文件夹中。

我在这里讨论过太多事情,但没有任何帮助。

1 个答案:

答案 0 :(得分:0)

在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.so

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