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

操作系统是 Fedora 11

4

1 回答 1

1

您链接到共享库的每个目标文件都必须与位置无关,这意味着加载程序可以将其移动到内存中的任何位置并且它仍然可以工作。您的加密库不是以这种方式编译的,因此建议重新编译它并-fPIC添加到您的编译标志中。或者,您可以使 libutil 成为静态库而不是共享库。如果没有有关您的构建文件的更多详细信息,我无法提供有关如何执行此操作或选择哪一个的更多详细信息。

于 2010-10-14T19:05:17.033 回答