У меня есть код с использованием библиотеки SystemC, который компилируется отлично, когда я физически на машине, но бросает неопределенные ссылки, когда я ssh'ing в.Неопределенная ссылка на `sc_dt :: sc_uint_base :: to_string [abi: cxx11]
g++ -Wno-deprecated -O0 -g3 -I/path/to/include socex2.cpp -L/path/to/lib -lsystemc
/tmp/ccCNdiMA.o: In function `sc_dt::sc_uint_base::print(std::ostream&) const':
/path/to/include/sysc/datatypes/int/sc_uint_base.h:844: undefined reference to `sc_dt::sc_uint_base::to_string[abi:cxx11](sc_dt::sc_numrep, bool) const'
collect2: error: ld returned 1 exit status
Сначала я думал, что это была проблема с LD_LIBRARY_PATH
, устанавливается в ~/.bashrc для /path/to/lib
. Я источник ~/.bashrc в ~/.bash_profile для неинтерактивных сеансов, таких как ssh.
Чтобы проверить, вот соответствующие биты /usr/bin/env
:
TERM=xterm
SHELL=/bin/bash
SSH_CLIENT=xx.xx.xx.xx 56176 22
LD_LIBRARY_PATH=/path/to/lib
SSH_CONNECTION=xx.xx.xx.xx 56176 yy.yy.yy.yy 22
_=/usr/bin/env
Почему не моя программа ссылок? Заголовки и библиотеки, которые я использую, точно такие же и в тех же местах.
P.S.
- Я не имею права администратора на этих машинах
- НКУ является 5.4.0
- ОС Ubuntu 16,04
зависимые библиотеки:
$ ldd /path/to/lib/libsystemc.so linux-vdso.so.1 => (0x00007ffe29d36000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb9b85f5000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb9b8273000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb9b7f69000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb9b7ba0000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb9b798a000) /lib64/ld-linux-x86-64.so.2 (0x000056093a23e000)
Проверьте выходные данные 'env' cmd на обеих машинах. Если у вас нет доступа к администратору, возможно, у вас нет физического доступа и, возможно, это удаленный сервер. Является ли машина ssh'ed той же машиной с физическим доступом, где у вас есть успех? Или вы думаете, что машины идентичны. Такая ошибка может быть из-за несоответствия версии библиотеки (библиотека существует, но функции или прототипы несовместимы). Или некоторая библиотека не загружена (проверьте библиотеки по умолчанию). – oklas
Что такое версия ОС, версия GCC и зависимые библиотеки? – jww
@jww Обновлен мой вопрос с информацией – CJxD