发生gcc链接错误

时间:2009-06-22 01:10:03

标签: gcc linker

我用gcc编译

  

gcc -l。 'net-snmp-config --cflags'   -fPlC -shared -c -o matsu_object.o tsu_object.c

但发生了此错误

  

gcc:-lcrypto:因为链接是   未完成,输入文件   未使用链接器

怎么了?

3 个答案:

答案 0 :(得分:3)

你输错了这个问题吗?没有办法输出你写的信息,我希望正确的命令更像是

gcc -L. `net-snmp-config --cflags` -fPIC -shared -c -o matsu_object.o tsu_object.c

请注意-L大写,反引号而不是单引号,以及I中的大写PIC

此外,您没有说明您要执行的操作,但net-snmp-config也应至少采用--libs--agent-libs中的一个。


啊,我读的不够仔细......

-c表示“编译”,即:从tsu_object.c生成,编译为matsu_object.o

没有-c,编译器实际链接,即:从*.oa.out或其他指定文件生成。

-shared(以及-l-L等链接器标志)仅在链接时才有意义。编译时它们没有意义,正如你在-c所做的那样。

请更正问题中的命令行以准确反映您正在运行的内容,并对您要执行的操作提供更多说明。

答案 1 :(得分:1)

我认为你使用的是刻度'而不是后退'。 --cflags真的给链接器选项吗?我认为你在这里的链接步骤。另外,-c在链接上的作用是什么。我认为-c只是编译而不是尝试链接。

答案 2 :(得分:-1)

您使用单引号而不是反引号。

而不是:

gcc -l. 'net-snmp-config --cflags' -fPlC -shared -c -o matsu_object.o tsu_object.c

您应该输入:

gcc -l. `net-snmp-config --cflags`-fPlC -shared -c -o matsu_object.o tsu_object.c

net-snmp-config是一个程序。当您使用--cflags运行它时,它会计算出您应该用来编译程序的正确cflags。

但你知道吗?你应该使用autoconf。即使对于这么小的东西,做这项工作通常也是有意义的。我认识的大多数人都需要在不止一个平台上编译......