Кросс-компиляция libtorrent для raspberry pi 3 model B - PullRequest
0 голосов
/ 07 мая 2020

Я пытался перекрестно скомпилировать jlibtorrent для raspberry pi, который использует boost build для компиляции. Я использую официально предоставленный кросс-компилятор со следующим config.jam:

import os ;

using gcc : arm : arm-linux-gnueabihf-g++ :
    <cxxflags>-fPIC
    <cxxflags>-std=c++14
    <cxxflags>-fno-strict-aliasing
    <cxxflags>-fvisibility=hidden
    <linkflags>-m32
    <linkflags>-static-libstdc++
    <linkflags>-static-libgcc
    <linkflags>"-z noexecstack"
    # debug information
    <cxxflags>-g
    <cxxflags>-gdwarf-4
    <cxxflags>-ggdb
    ;

Я в основном скопировал существующую конфигурацию для linux -x86 и заменил компилятор, но я ' m получает следующую ошибку компиляции:

libtorrent/src/entry.cpp: In member function 'libtorrent::entry& libtorrent::entry::operator[](libtorrent::string_view)':
libtorrent/src/entry.cpp:86:33: error: no matching function for call to 
'std::map<std::basic_string<char>, libtorrent::entry, libtorrent::aux::strview_less, std::allocator<std::pair<const std::basic_string<char>, libtorrent::entry> > >::find(libtorrent::string_view&)' 

auto const i = dict().find(key);

Я только предполагаю, что версия кросс-компилятора (4.9.3) несовместима с libtorrent, потому что я видел в linux -32-config .jam, что он использует g ++ - 5. Что еще мне не хватает? Вы можете найти измененный репозиторий в моих репозиториях на github . Я использую swig/build-linux-armv7.sh для строительства.

Ответы [ 2 ]

1 голос
/ 07 мая 2020

этот вызов (std :: map :: find ()) был добавлен в C ++ 14 (см. docs ). Я вижу, вы также передаете -std=c++14 в командной строке. Вы уверены, что ваш G CC поддерживает C ++ 14? Это кажется немного старым для этого.

Текущая стабильная ветка libtorrent требует только поддержки C ++ 11, если это ветвь, которую вы создаете, возможно, что-то не так с определением поддержки компилятора здесь . Если вы собираете из libtorrent master, для этого требуется надлежащая поддержка C ++ 14. Так что в этом случае вы можете использовать стабильную версию.

0 голосов
/ 07 мая 2020

Благодаря @Arvid мне удалось скомпилировать его, используя текущую стабильную ветку для libtorrent (RC_1_2) и следующий файл jam, который вы можете найти здесь .

import os ;

using gcc : arm : arm-linux-gnueabihf-g++ :
    <cxxflags>-fPIC
    <cxxflags>-std=c++11
    <cxxflags>-fno-strict-aliasing
    <cxxflags>-fvisibility=hidden
    <linkflags>-static-libstdc++
    <linkflags>-static-libgcc
    <linkflags>"-z noexecstack"
    # debug information
    <cxxflags>-g
    <cxxflags>-gdwarf-4
    <cxxflags>-ggdb;
...