Linking fails on Linux/GCC6, due to missing -fPIC for object files
Closed this issue · 2 comments
Akaricchi commented
[0] [akari@navi] [main ← /home/akari/git/HonokaMiku]
% make
g++ -c -O3 src/JP_Decrypter.cc
g++ -c -O3 src/V2_Decrypter.cc
g++ -c -O3 src/Helper.cc
g++ -c -O3 src/HonokaMiku.cc
mkdir -p bin/honokamiku
g++ -O3 -fPIC -pie -o bin/honokamiku/HonokaMiku JP_Decrypter.o V2_Decrypter.o Helper.o HonokaMiku.o -Wl,-E
/usr/bin/ld: JP_Decrypter.o: relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
JP_Decrypter.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make: *** [Makefile:67: honokamiku] Error 1
[2] [akari@navi] [?main ← /home/akari/git/HonokaMiku]
% uname -a
Linux navi 4.6.2-1-ARCH #1 SMP PREEMPT Wed Jun 8 08:40:59 CEST 2016 x86_64 GNU/Linux
[0] [akari@navi] [?main ← /home/akari/git/HonokaMiku]
% g++ --version
g++ (GCC) 6.1.1 20160602
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[0] [akari@navi] [?main ← /home/akari/git/HonokaMiku]
% make clean
rm: cannot remove 'JP_Decrypter.obj': No such file or directory
rm: cannot remove 'V2_Decrypter.obj': No such file or directory
rm: cannot remove 'Helper.obj': No such file or directory
rm: cannot remove 'HonokaMiku.obj': No such file or directory
rm: cannot remove 'VersionInfo.res': No such file or directory
make: [Makefile:92: clean] Error 1 (ignored)
rm: cannot remove 'obj': No such file or directory
make: [Makefile:93: clean] Error 1 (ignored)
rm: cannot remove 'libs': No such file or directory
make: [Makefile:94: clean] Error 1 (ignored)
[0] [akari@navi] [main ← /home/akari/git/HonokaMiku]
% CXXFLAGS=-fPIC make
g++ -c -O3 -fPIC src/JP_Decrypter.cc
g++ -c -O3 -fPIC src/V2_Decrypter.cc
g++ -c -O3 -fPIC src/Helper.cc
g++ -c -O3 -fPIC src/HonokaMiku.cc
mkdir -p bin/honokamiku
g++ -O3 -fPIC -pie -o bin/honokamiku/HonokaMiku -fPIC JP_Decrypter.o V2_Decrypter.o Helper.o HonokaMiku.o -Wl,-E
rm JP_Decrypter.o V2_Decrypter.o Helper.o HonokaMiku.o
[0] [akari@navi] [main ← /home/akari/git/HonokaMiku]
% bin/honokamiku/HonokaMiku --version
HonokaMiku. Universal LL!SIF game files decrypter
Version 2.4.0
Build at Jul 6 2016 09:57:58
Compiled using gcc-6.1.1 20160602
[0] [akari@navi] [main ← /home/akari/git/HonokaMiku]
%
MikuAuahDark commented
I removed the -fPIC -pie
option entirely. Tel me if there are problems caused by it because I don't have access to Linux right now.
Akaricchi commented
Yeah this works too.