我用gcc编译
gcc -l。 'net-snmp-config --cflags' -fPlC -shared -c -o matsu_object.o tsu_object.c
但发生了此错误
gcc:-lcrypto:因为链接是 未完成,输入文件 未使用链接器
怎么了?
答案 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
,编译器实际链接,即:从*.o
,a.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。即使对于这么小的东西,做这项工作通常也是有意义的。我认识的大多数人都需要在不止一个平台上编译......