Кросс-компиляция Tilera - ошибки компоновки - PullRequest
0 голосов
/ 17 ноября 2010

Я пытаюсь скомпилировать исходный код для Tilera, и я получил следующую ошибку при компоновке.Все эти ошибки относятся к C ++ STL (Стандартная библиотека шаблонов).

Есть ли разница в процессе компоновки библиотеки STL?

Ошибки:

gtpu_t. a: In function `stlp_std::_Atomic_swap_struct<0>::_S_swap(unsigned int volatile* , unsigned int)':
91 /u/TILERA/TileraMDE-2.1.1.107611/tilepro/tile/usr/include/cpp/stl/stl/_threads.h :588: undefined reference to `stlp_std::_Atomic_swap_struct<0>::_S_swap_lock'
92 /u/TILERA/TileraMDE-2.1.1.107611/tilepro/tile/usr/include/cpp/stl/stl/_threads.h :588: undefined reference to `stlp_std::_Atomic_swap_struct<0>::_S_swap_lock'
93 /u/TILERA/TileraMDE-2.1.1.107611/tilepro/tile/usr/include/cpp/stl/stl/_threads.h :591: undefined reference to `stlp_std::_Atomic_swap_struct<0>::_S_swap_lock'
94 /u/TILERA/TileraMDE-2.1.1.107611/tilepro/tile/usr/include/cpp/stl/stl/_threads.h :591: undefined reference to `stlp_std::_Atomic_swap_struct<0>::_S_swap_lock'
95 /u/TILERA/LTESTACK/TILERA/DEV/lte/lte_enb/enb_app/../enb_gtpu/gtpu_t/lib/gtpu_t. a: In function `stlp_std::_Atomic_swap_struct<0>::_S_swap_ptr(void* volatile*, v oid*)':
96 /u/TILERA/TileraMDE-2.1.1.107611/tilepro/tile/usr/include/cpp/stl/stl/_threads.h :614: undefined reference to `stlp_std::_Atomic_swap_struct<0>::_S_swap_lock'
97 /u/TILERA/LTESTACK/TILERA/DEV/lte/lte_enb/enb_app/../enb_gtpu/gtpu_t/lib/gtpu_t. a:/u/TILERA/TileraMDE-2.1.1.107611/tilepro/tile/usr/include/cpp/stl/stl/_threads .h:614: more undefined references to `stlp_std::_Atomic_swap_struct<0>::_S_swap_ lock' follow 

Ответы [ 3 ]

1 голос
/ 15 марта 2011

Я думаю, что это поможет.Я пытался скомпилировать с Tilera раньше и получил похожие ошибки, «неопределенная ссылка на».Решением было включить библиотеку в свойствах проекта.

Нажмите на настройки вашего проекта, перейдите к путям и символам, и в библиотеках укажите библиотеку, в которой определена stlp_std::_Atomic_swap_struct<0>::_S_swap_lock.

Также обратите внимание, что Tilera IDE (eclipse) тупой.Определение пути к вашей библиотеке Tile не будет работать!Просто введите имя библиотеки.(Учитывая тот факт, что вы правильно установили переменные IDE).Если вы используете командные строки, включите библиотеку, просто добавив аргумент
-lMyLibrary

Вот пример:
Под библиотеками есть:

tmc
pthread

Я предполагаю, что вы разрабатываете под Linux

0 голосов
/ 17 ноября 2010

Если я скомпилирую небольшую программу, которая использует _S_swap_lock, она работает для меня:

$ cat foo.cc
#include <rope>
int main(void)
{
  std::crope r(100000, 'x');
  std::crope r2 = r + "abc";
}
$ tile-c++ foo.cc
$ nm -C a.out | grep -i atomic
0000000000059028 V stlp_std::_Atomic_swap_struct<1>::_S_swap_lock

Это разновидность "<1>" для 32-битной атомики, которая, кажется,обычно используется.Я не вижу аромат <0> в libsupc ++. A.Я подозреваю, что вам нужно опубликовать код, который воспроизводит проблему.

0 голосов
/ 17 ноября 2010

"STL" - это только часть вашей реализации C ++.Он не должен быть связан конкретно, точно так же, как вам не нужно связывать malloc или new конкретно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...