0

Löveから始めたばかりで、大好きです!現在、Ubuntu 14.04 でテストしています。

love 0.8.0 は問題なくコンパイルできましたが、bitbucket から 0.9.2 をコンパイルすると問題が発生します。どうやらグリーに食べられてしまったらしい…

次の理由により、リンク時にこのエラーが発生しましたlibturbojpeg

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libturbojpeg.a(libturbojpeg_la-turbojpeg.o): relocation R_X86_64_32 against `.data' can not be used when making a shared object; recompile with -fPIC

この StackOverflow エントリによると、デフォルトの libturbojpeg バイナリが apt-get 経由で Ubuntu にインストールされているようです:

tomas@ubuntu:~/tomas/love/love-0.9.2-bitbucket$ dpkg -L libjpeg-turbo8-dev | grep libturbojpeg.a
/usr/lib/x86_64-linux-gnu/libturbojpeg.a
tomas@ubuntu:~/tomas/love/love-0.9.2-bitbucket$ dpkg -l libjpeg-turbo8-dev
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                               Version                Architecture           Description
+++-==================================-======================-======================-=========================================================================
ii  libjpeg-turbo8-dev:amd64           1.3.0-0ubuntu2         amd64                  Development files for the IJG JPEG library

は でコンパイルされていない-fPICので、そのソース コードを取得し、そのオプションを使用して再コンパイルし、löveのビルド プロシージャで何かを変更して、コンパイルされたものを指すようにする必要があると思います。

私は正しい方向に進んでいますか、それとも何かを見逃している可能性がありますか?

よろしく、トム

PD: この特定のケースで、なぜこのライブラリを -fPIC でコンパイルする必要があるのか​​ 疑問に思っています...

   -fPIC
       If supported for the target machine, emit position-independent code, suitable for dynamic linking and avoiding any limit on the size of the
       global offset table.  This option makes a difference on the m68k, PowerPC and SPARC.
4

1 に答える 1