我正在将arm交叉编译器从4.3.3更新到4.9.4。我看到的一个问题是新编译器不再自动包含依赖库。例如:
gcc ... -L -l -lssl -lrt
与以前的编译器一起工作正常。如果libssl需要引用libcrypto中的内容,那么链接器将自动查找并链接libcrypto(不需要-lcrypto)。
使用新的编译器,这仍然有效,但前提是libssl不引用libcrypto中的任何内容。如果是,则需要-lcyrpto。同样的问题适用于-lpthread,-ldl等。
这是gcc行为的改变还是在构建gcc时没有正确配置?
答案 0 :(得分:1)
您使用的是静态库还是动态库?对于动态库,如果libssl
取决于libcrypto
,只要-lcrypto
本身已正确关联,您就不需要明确链接libssl
,但如果您想在libcrypto
的符号程序中直接使用,则必须明确链接它。这是更新版本的binutils中的更改/故意回归。