2016-03-22 140 views
-2

我试图使用gcc命令链接一个静态库,但它不起作用。GCC链接的静态库失败

enter image description here

+3

请不要发布文本的图像。将实际测试复制粘贴到问题的正文中。您可能还想[阅读如何提出问题](http://stackoverflow.com/help/how-to-ask),并学习如何创建[最小,完整和可验证示例](http: //stackoverflow.com/help/mcve)。 –

回答

0

如果你想使用-l标志命令添加到您的应用程序,像这样链接:

gcc t.c -L. -lt1.a -o t 

那么你的。一个归档需要有libt1.a不仅仅是t1.a一个文件名。

当使用-lsome_name库中的链接,链接器将查找名为libsomename.solibsomename.a

如果你不想重命名。一个存档文件,你也可以做

gcc t.c t1.a -o t 

此外,在未来,请不要发布您的代码或命令的图像,只需复制粘贴文本到您的文章

+0

probelom解决了,但是当我试图添加param'-static'时,我得到了“ld:library找不到-lcrt0.o”错误 – Richard

+0

@Rickard好吧,但是如果你需要帮助,你应该问一个新问题。 – nos

0

图书馆POSIX环境(如Linux和OSX)通常以lib<name of library>.a的模式命名。当您与图书馆链接时,或者使用-l选项,只能使用<name of library>,链接器会自动添加lib前缀和.a后缀。 您不使用-l选项,而是给出整个文件名称verbatime。

既然你不使用标准的命名方案库,你不能。如果你想使用使用-l选项,而是必须明确使用的库文件,类似于

$ gcc ... t1.a 

你有-l选项命名你的库libt1.a只有使用t1链接时:

$ gcc ... -L. -lt1 
+0

probelom解决了,但是当我试图添加param'-static'时,我得到“ld:library找不到-lcrt0.o”错误 – Richard