gcc链接器不会自动包含依赖库

时间:2017-06-05 21:06:10

标签: c gcc linker

我正在将arm交叉编译器从4.3.3更新到4.9.4。我看到的一个问题是新编译器不再自动包含依赖库。例如:

gcc ... -L -l -lssl -lrt

与以前的编译器一起工作正常。如果libssl需要引用libcrypto中的内容,那么链接器将自动查找并链接libcrypto(不需要-lcrypto)。

使用新的编译器,这仍然有效,但前提是libssl不引用libcrypto中的任何内容。如果是,则需要-lcyrpto。同样的问题适用于-lpthread,-ldl等。

这是gcc行为的改变还是在构建gcc时没有正确配置?

1 个答案:

答案 0 :(得分:1)

您使用的是静态库还是动态库?对于动态库,如果libssl取决于libcrypto,只要-lcrypto本身已正确关联,您就不需要明确链接libssl,但如果您想在libcrypto 的符号程序中直接使用,则必须明确链接它。这是更新版本的binutils中的更改/故意回归。