我试图在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
文件被收集起来与库链接在一起以解析所有引用。