libturbojpeg编译love-0.9.2的问题

时间:2015-04-01 15:54:29

标签: linker love2d fpic

刚从Löve开始,我很喜欢它! 我目前正在Ubuntu 14.04下进行测试。

我能够毫无困难地编译爱情0.8.0,但是我遇到了从bitbucket编译0.9.2的问题。 看来,我可能是eaten by a grue...

由于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

根据this StackOverflow entry,似乎通过apt-get在Ubuntu中安装了默认的libturbojpeg二进制文件:

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.

1 个答案:

答案 0 :(得分:0)

好吧,似乎更新到0.9.2标签使其工作:

hg update 0.9.2
./platform/unix/automagic 
./configure
make

检查here有关bitbucket的问题。

  

Alex Szpakowski:   这对确切的问题没有帮助,但是   LÖVE0.9.2不依赖于libturbojpeg或与libturbojpeg链接。最新的   LÖVE存储库中的代码是0.10.0,具有不同的代码   依赖性比0.9.2(并且尚未完成/发布。)如果你想要   为Linux编译0.9.2(而不是使用.deb或PPA)   应该从这里下载源代码:   https://bitbucket.org/rude/love/downloads/love-0.9.2-linux-src.tar.gz   ,或更新到Mercurial存储库中的0.9.2标记并运行   自动化等。