2014-10-05 115 views
1

有人可以帮我弄清楚这个错误。x86_64-pc-cygwin 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,仍然是抛出错误。库存在于提到的文件夹中。

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

+0

做'ls Lib'并发布结果 – 2014-10-06 18:13:51

回答

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/目录添加到您的路径。