0

これは私が解決したので少し学術的です (私はそう思います!) が、なぜそれが起こったのか誰かが知っているかどうか興味があります.

私は数年間開発されたプロジェクトに取り組んでいます。たとえば、依存しているライブラリがいくつかあります。

myencryption.so
|
 ----- #include <openssl/sha.h>

mymainapp
|
----- LIBS += -lmyencryption -lssl -lcrypto

失敗すると、次のようなメッセージで失敗します。

../../bin/libbcencryption.so: undefined reference to `SHA256_Update'
../../bin/libbcencryption.so: undefined reference to `SHA256_Final'
../../bin/libbcencryption.so: undefined reference to `SHA256_Init'

以前は問題なく機能してビルドされていましたが、現在はプラットフォームを前進させており、GCC 4.6 が利用可能な最新バージョンであり、この方法でライブラリをリンクすると重大なビルドの問題が発生しますが、ライブラリがバイナリに対してリンクされている場合にのみ発生します。ビルドを機能させるために、構造化されています。

myencryption.so
|
 ----- #include <openssl/sha.h>
 ----- LIBS += -lssl -lcrypto

これはうまくいきます。以前はコンパイルで必要とされなかった Qt ライブラリへの参照など、その他のものも必要です。

しかし、GCC リリース ノートでこのような変更への参照を見つけることができないので、変更されたかどうか、または別の要因が関係しているかどうかを誰かが知っているかどうか、私は間違いなく興味があります。したがって、ベースから移動した Qt ベースのプロジェクトです。 Ubuntu 11.04 のプラットフォームが 12.10 に、GCC のバージョンが 4.5.2 から 4.6.3 になりました。Ubuntu で行われたアップグレードを除けば、ビルド プロセスに変更はありません。

編集:コメントで参照されている回答は、問題の説明に近づいているようでld、頭痛の原因となる更新があります。

4

0 に答える 0