Ошибка компоновки: «перемещение R_X86_64_32 … нельзя использовать при создании общего объекта; перекомпилировать с -fPIC & quot;

Я пытаюсь скомпилировать Tox (особенно toxcore). Когда я пытаюсь его скомпилировать, я сталкиваюсь со следующей ошибкой:

>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

После сообщения об ошибке я попытался использовать fPIC экспортируя флаги C ++ (export CXXFLAGS="$CXXFLAGS -fPIC"), добавив аргумент configure (./configure --enable-shared) и редактируя 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 ..

3

Решение

В скрипте конфигурации должна быть ошибка, она не должна libvpx.a,

Но не беспокойтесь, поскольку Ubuntu предоставляет пакеты для обоих libvpx-dev а также libsodium-devи, кажется, что их использование работает нормально, поэтому вам, вероятно, следует просто сделать это, если только нет веской причины не делать этого.

Кроме того, если вы необходимость классический toxcore, похоже на то c-toxcore является преемником, поэтому вы, вероятно, должны использовать его вместо этого.

0

Другие решения

Конфигурирование с --enable-pic добавит необходимые опции -fPIC и у меня работает.

0

По вопросам рекламы [email protected]