链接GCC中的库



我试图在ubuntu中使用makefile编译一些文件。在web上搜索了几次之后,我在我的makefile中添加了以下几行。

run: hellocode.cpp    
    g++ -c hellocode.cpp -lssl -lcrypto

仍然在编译时创建目标文件,然后抛出这个错误:定义引用"SSL_write"

相反,如果删除'-c'并像这样使用

run: hellocode.cpp         
    g++ hellocode.cpp -lssl -lcrypto

然后我没有看到之前的链接错误,但它显示了与openssl链接无关的不同错误,但与代码中的其他文件相关。我已经在这个论坛上浏览了许多与此相关的问题,似乎没有一个对我有帮助。

请告诉我是否我的makefile是错误的,或者是有一些问题,我的机器,它不能链接到我的库。

您可以采用一个简单的Makefile。注意,编译和链接是两个步骤。如果需要,您可以使用-I作为附加的包含路径,使用-L作为附加的链接路径。

.PHONY : all 
all : hellocode
hellocode : hellocode.o 
    g++ -o hellocode hellocode.o -lssl -lcrypto
hellocode.o : hellocode.cpp
    g++ -c hellocode.cpp -o hellocode.o

如果对你有帮助,这里有一些makefile的基础知识。

库链接应该在最后阶段完成:)

-c意味着"只编译"-它只是构建.o对象文件,没有任何引用分辨率(所以-lXXX只是忽略那里)。

-lXXX选项应该添加到最后一次调用gcc(没有-c),它产生可执行文件,其中所有.o文件被收集起来与库链接在一起以解析所有引用。

最新更新