我有一堆不带-fPIC
选项的目标文件。因此,对函数的调用不使用@PLT
。 (源代码为C,并使用clang
进行编译。)
我想将这些目标文件链接到一个共享库,可以在运行时使用dlopen
加载该共享库。我需要这样做,因为在加载实际的.so
之前,我必须做很多设置。
但是每次我尝试与-shared
选项链接时,都会出现错误-
制作共享库时,不能使用C0]相对于符号
R_X86_64_PC32
的重定位;用splay_tree_lookup
重新编译>是否有一些我可以与
-fPIC
一起使用的标志,以便它生成加载时重定位库。实际上,我没有任何搬迁也可以。我可以提供该库的基本地址,如果虚拟地址不可用,则ld
可能会失败。
我用于编译dlopen
文件的命令等效于-
c
并且我正在使用链接
clang -m64 -c foo.c
我说是等效的,因为它是一个自定义编译器(由
clang -m64 -shared *.o -o foo.so
分叉)并具有一些额外的步骤。但这是等效的。
我有一堆不带-fPIC选项的目标文件。因此,对函数的调用不使用@PLT。 (源代码是C,并使用clang编译)。我想链接这些...
如果可能,使用clang
选项重新编译库的目标文件将是最佳选择!