как понять ошибку компоновщика - PullRequest
0 голосов
/ 18 ноября 2011

Я пытаюсь скомпилировать динамическую библиотеку с экзотическим сочетанием версий.Во-первых, я кросс-компилирую для геода ADM внутри робота, с определенным набором инструментов, который использует gcc-4.3.3, и имеет свое собственное дерево каталогов для поиска его заголовков и ссылок, но я использую много числовыхбиблиотеки, такие как boost :: numeric, blas, и библиотека динамических и кинематических моделей роботов с именем jrl-dynamic, которая отправляет ошибки компоновщика.

Когда я компилирую, сначала все объектные файлы генерируются без проблем (потому что я взломал цепочку инструментов, включая создание символических ссылок), но во время компоновки я получил ошибки вроде:

/usr/lib/liblapack.so.3gf.0: undefined reference to `_gfortran_string_len_trim@GFORTRAN_1.0'
/usr/lib/liblapack.so.3gf.0: undefined reference to `_gfortran_concat_string@GFORTRAN_1.0'

и

/usr/lib/libjrl-dynamics.so.1.19.3-42-g8c6f: undefined reference to `std::ctype<char>::_M_widen_init() const@GLIBCXX_3.4.11'

Я хочу заставить компоновщика найти такие символы, как _gfortran_string_len_trim y моей запрашиваемой версии gfortran, которая называется gfortran2, где на самом деле с помощью команды reafelf я нашел все символы, запрошенные lapack.но -L / mypath / gfortran2 не работает !!и я получил те же ошибки.Я хочу знать, что означает @ в ошибках компоновщика, где в файлах elf говорится, что компоновщик ищет символы ???.

1 Ответ

0 голосов
/ 20 ноября 2011

Я думаю, что @ в символах относятся к версии , но я не очень знаком с этим. Смотри также dlvsym

...