Reputation: 31
I am in the process of updating an arm cross compiler from 4.3.3 to 4.9.4. One issue I am seeing is that the new compiler no longer automatically includes dependent libraries. For example:
gcc ... -L -l -lssl -lrt
works fine with the previous compiler. If libssl needed to reference something in libcrypto, then the linker would automatically find and link with libcrypto (no -lcrypto needed).
With the new compiler, this still works, but only if libssl does not reference anything in libcrypto. If it does, then the -lcyrpto is required. The same issue applies to -lpthread, -ldl, etc.
Is this a change in the behavior of gcc or is something not configured properly when building gcc?
Upvotes: 3
Views: 533
Reputation: 215261
Are you using static or dynamic libraries? For dynamic libraries, if libssl
depends on libcrypto
, you don't need to explicitly link -lcrypto
as long as libssl
itself was correctly linked, but if you want to make direct use in your program of symbols from libcrypto
, then you have to explicitly link it. This is a change/intentional-regression in newer versions of binutils.
Upvotes: 1