1

前の従業員が私たちのために作成したカスタムソフトウェアのビルドプロセスをリバースエンジニアリングしようとしています。すべてを正常にコンパイルできるようになりましたが、リンクプロセスでエラーが発生し、crypto++の問題を示しています。手がかりはありますか?

compile.util:

compile:
     [echo] Compiling: util
       [cc] Starting dependency analysis for 55 files.
       [cc] 55 files are up to date.
       [cc] 0 files to be recompiled from dependency analysis.
       [cc] 0 total files to be compiled.

link.util:

link:
     [echo] Linking shared library: libutil
       [cc] 0 total files to be compiled.
       [cc] Starting link
       [cc] /usr/bin/ld: /home/john/softwarename/thirdparty/crypto/5.6.1_64/libcryptopp.a(cryptlib.o): relocation R_X86_64_32 against `CryptoPP::DEFAULT_CHANNEL' can not be used when making a shared object; recompile with -fPIC
       [cc] /home/john/softwarename/thirdparty/crypto/5.6.1_64/libcryptopp.a: could not read symbols: Bad value
       [cc] collect2: ld returned 1 exit status

BUILD FAILED
/home/john/softwarename/build/build.xml:167: Following error occured while executing this line
/home/john/softwarename/build/link.xml:27: gcc failed with return code 1

OsはFedora11です

4

1 に答える 1

1

共有ライブラリにリンクするすべてのオブジェクト ファイルは、位置に依存しない必要があります。つまり、ローダーはメモリ内の任意の場所に移動でき、引き続き機能します。暗号化ライブラリはそのようにコンパイルされていないため-fPIC、コンパイル フラグに追加して再コンパイルするようにという警告が表示されます。または、libutil を共有ライブラリではなく静的ライブラリにすることもできます。ビルド ファイルの詳細がなければ、それを行う方法や選択するファイルの詳細を提供することはできません。

于 2010-10-14T19:05:17.033 に答える