链接GCC中的库
Linking libraries in 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
文件被收集起来与库链接在一起以解析所有引用。
相关文章:
- 未知的 GCC 链接器错误,但已成功构建
- 微控制器的首次 gcc 链接器脚本编译但不运行
- 简单派生类上的Linux GCC链接错误
- 可能的 GCC 链接器错误会导致将弱符号和局部符号链接在一起时出错
- GCC链接器 - 将存档中的所有对象文件映射到特定部分
- 在Mac 10.9 Mavericks上,clang配置与gcc链接配置不同吗
- 使用GCC链接库中的Ubuntu中的C 代码
- GCC链接器:使用了哪些输入库
- 如何将GCC链接器固定地址添加到链接文件中
- 源代码生成的gcc链接错误
- fedora上的gcc链接器错误:未定义的引用
- GCC链接器抱怨对现有全局变量的未定义引用
- 编译静态库时出现 GCC 链接器错误
- 为什么gcc链接器对.a文件和.o文件的行为不同
- gcc链接的默认库
- 如何将C++共享库与 gcc 链接
- x86_64-pc-cygwin-gcc 链接器错误
- GCC 链接错误"__wcsrtombs: Zusicherung »data.__outbuf[-1] == '