gcc -c失败了,虽然它链接到了所需的库

时间:2014-08-14 13:07:16

标签: c gcc linker makefile libraries

我想为我正在编写的程序制作一个Makefile,但在编译方面我遇到了问题。到目前为止,我只是将源文件包含到main中并使用以下命令编译:

gcc main.c -lcrypto -lssl

我在我的程序中使用openssl。但是当我读到这不是一个好习惯时,我想编写一个make文件,并在main中包含头文件。但我有以下问题:

我想首先制作.o个文件:

gcc -lcrypto -lssl -c read_and_send.c

但是对于这个我得到了很多错误(未知类型名称),在OpenSSL库中定义的类型。我不知道如何修复它,就像使用我想写的数学库一样:

gcc -lm -c read_and_send.c

不是吗?

我期待着您的回复。

亲切的问候

Greenality

1 个答案:

答案 0 :(得分:2)

  

但是对于这个我得到了很多错误(未知的类型名称),这是在openssl库中定义的类型。

您需要在read_and_send.c

中加入openssl标头

您应该阅读有关C编程的基本教程以及如何使用标头以及如何编译和链接。

  

我不知道如何修复它,就像使用我想写的数学库一样:

     

gcc -lm -c read_and_send.c

     

不会吗?

不,-c选项意味着您只想将源代码编译为.o文件,而不是链接,因此不使用库,并且将忽略任何-l选项。

将所有-l文件链接在一起以创建可执行文件时,需要使用.o选项。当您执行该链接步骤时,库应位于命令的 end 之后,依赖于它们的文件。