2016-11-16 77 views
3

我正在嘗試編譯Tox(特別是toxcore)。當我嘗試編譯它,我會遇到以下錯誤:鏈接錯誤:「重新定位R_X86_64_32 ...在製作共享對象時無法使用;使用-fPIC重新編譯」

>make 
make all-recursive 
make[1]: Entering directory '/root/Tox/toxcore' 
Making all in build 
make[2]: Entering directory '/root/Tox/toxcore/build' 
    CCLD  libtoxav.la 
/usr/bin/ld: /usr/local/lib/libvpx.a(vpx_codec.c.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC 
/usr/local/lib/libvpx.a: error adding symbols: Bad value 
collect2: error: ld returned 1 exit status 
Makefile:1385: recipe for target 'libtoxav.la' failed 
make[2]: *** [libtoxav.la] Error 1 
make[2]: Leaving directory '/root/Tox/toxcore/build' 
Makefile:506: recipe for target 'all-recursive' failed 
make[1]: *** [all-recursive] Error 1 
make[1]: Leaving directory '/root/Tox/toxcore' 
Makefile:410: recipe for target 'all' failed 
make: *** [all] Error 2 

在錯誤消息後,我試圖通過出口C++標誌(export CXXFLAGS="$CXXFLAGS -fPIC"),通過添加參數configure./configure --enable-shared)使用fPIC和編輯Makefile(將CC = gcc更改爲CC = gcc -fPIC),但這些嘗試沒有奏效,我仍然遇到同樣的錯誤。什麼可能出錯?

這是我現在所擁有的(在Ubuntu)的方法:

sudo apt-get install pkg-config 
sudo apt-get install build-essential 
sudo apt-get install libtool 
sudo apt-get install autotools-dev 
sudo apt-get install automake 
sudo apt-get install checkinstall 
sudo apt-get install check 
sudo apt-get install git 
sudo apt-get install yasm 

cd ~ 
mkdir Tox 
cd Tox 

git clone https://github.com/jedisct1/libsodium.git 
cd libsodium 
git checkout tags/1.0.3 
./autogen.sh 
./configure && make check 
sudo checkinstall --install --pkgname libsodium --pkgversion 1.0.0 --nodoc 
sudo ldconfig 
cd .. 

git clone https://chromium.googlesource.com/webm/libvpx 
cd libvpx 
git checkout tags/v1.3.0 
./configure 
make 
make install 
cd .. 

git clone https://github.com/irungentoo/toxcore.git 
cd toxcore 
autoreconf -i 
./configure 
make 
sudo make install 
cd .. 
+2

在更改配置後是否清除了以前的版本?你可以檢查日誌,看看你是否真的在編譯標誌中追加了'-fPIC'。 – Mine

+0

@我的感謝您的評論。是的,我嘗試了幾次清潔。在'config.log'中,我看到引用'-fPIC'表明它確實在使用(例如'檢查gcc PIC標誌-fPIC -DPIC是否工作,'結果:是'等)。 – d3pd

回答

0

必須有在配置腳本中的錯誤,不應該拿出libvpx.a

但是不要擔心,因爲Ubuntu提供libvpx-devlibsodium-dev的軟件包,並且使用這些軟件似乎工作得很好,所以你應該這樣做,除非有很強的理由不這樣做。

另外,除非你需要經典toxcore,它似乎c-toxcore是繼任者,所以你可能應該用它來代替。

+0

超級,安裝'libvox-dev'和'libsodium-dev'似乎已經奏效。謝謝! – d3pd

0

配置--enable-pic將添加必要的-fPIC選項,併爲我工作。

相關問題