DarkEnergyProcessor/HonokaMiku

Linking fails on Linux/GCC6, due to missing -fPIC for object files

Closed this issue · 2 comments

[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]
 % 

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.

Yeah this works too.