当试图修复一些问题时出现了这个问题安装问题 https://stackoverflow.com/q/43191675/2173773
with QtCore4 https://metacpan.org/pod/QtCore4。在某一点make
尝试运行以下命令:
/usr/bin/c++ -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong \
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O3 -DNDEBUG \
-shared -Wl,-soname,QtCore4.so -o ../../blib/arch/auto/QtCore4/QtCore4.so \
CMakeFiles/perlqtcore4.dir/binding.cpp.o \
CMakeFiles/perlqtcore4.dir/handlers.cpp.o \
CMakeFiles/perlqtcore4.dir/marshall_types.cpp.o \
CMakeFiles/perlqtcore4.dir/util.cpp.o \
CMakeFiles/perlqtcore4.dir/QtCore4.c.o \
-lQtCore -lQtGui -lQtNetwork \
/home/hakon/perlbrew/perls/perl-5.24.1/lib/5.24.1/x86_64-linux/CORE/libperl.a \
../../smokeqt/qtgui/libsmokeqtgui.so.3.0.0 \
../../smokeqt/qtnetwork/libsmokeqtnetwork.so.3.0.0 \
-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc -lQtGui -lQtNetwork \
../../smokeqt/qtcore/libsmokeqtcore.so.3.0.0 -lQtCore \
../../smokegen/bin/libsmokebase.so.3.0.0 \
-Wl,-rpath,/home/hakon/Qt4-0.99.0/smokeqt/qtgui:/home/hakon/Qt4-0.99.0/smokeqt/qtnetwork:/home/hakon/Qt4-0.99.0/smokeqt/qtcore:/home/hakon/Qt4-0.99.0/smokegen/bin:
失败并显示来自链接器的以下错误消息:
/usr/bin/ld: /home/hakon/perlbrew/perls/perl-5.24.1/lib/5.24.1/x86_64-linux/CORE/libperl.a(toke.o):
relocation R_X86_64_PC32 against symbol `PL_curcop' can not be used when making
a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
从错误消息来看,在我看来,目标文件(此处:toke.o
) in
libperl.a
编译时没有-fPIC
标志设置。
我现在的问题是:
- 如何重新编译目标文件
libperl.a
with -fPIC
?
- 这次重新编译是否会导致与其他无关的问题
QtCore4
(因为很可能libperl.a
将被使用(链接
与)由不相关的其他应用程序/程序QtCore4
)?
我使用的是 Ubuntu 16.10 和 perl 版本 5.24.1。
如何使用 -fPIC 重新编译 libperl.a 中的目标文件
通过使用 -fPIC 标志重新编译 libperl.a。
./Configure -des -Accflags=-fPIC ...
此重新编译是否会导致与 QtCore4 无关的其他问题(因为 libperl.a 可能会被与 QtCore4 无关的其他应用程序/程序使用(链接))?
是的。更喜欢共享的 libperl。-Duseshrplib
将 perl 嵌入到共享库中时需要它。您可以取消 ELF 上所需的 -fPIC 技巧,但共享的 libperl 使其变得更加容易。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)