Неопределенная проблема с ссылками при создании исполняемого файла - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь создать исполняемый файл с использованием некоторых библиотек. Моя команда GCC: -

gcc -fPIC -DLINUX testdenpli /verilog/libdenpli.so -L/local/test/dir/ testpli.c 

У меня есть библиотека с символами по пути '/ local / test / dir /'

Error:-
libdenpli.so: undefined reference to `ktlTcl_InitStubs'
libdenpli.so: undefined reference to `ktlitclStubsPtr'

У меня есть библиотеки с вышеуказанными символами по пути "'/ local / test / dir /" .. Но проблема все еще видится.

Любой, пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

В сообщении об ошибке говорится, что libdenpli.so требует связывания другой общей библиотеки, которая предоставляет символы ktlTcl_InitStubs и ktlitclStubsPtr.

Найдите общую библиотеку, которая предоставляет эти символы, с помощью следующей команды:

for so in $(find /local/test/dir -name "*.so" -o -name "*.so.*"); do
    nm --defined-only --dynamic $so 2>/dev/null | grep -q 'ktlTcl_InitStubs|ktlitclStubsPtr' && echo $so; 
done

Затем добавьте эту библиотеку в командную строку компоновщика:

gcc -Wall -Wextra -fPIC -DLINUX -o testdenpli testpli.c /verilog/libdenpli.so <full-path-to-found-library>
0 голосов
/ 11 мая 2018

Как называется библиотека, содержащая символы? Вы должны включить -lNAME в свой проект. В общем,

gcc file.c -o file -L/path/to/libs -lNAME

Обратите внимание, префикс "lib" и суффикс ".so" не должны упоминаться.

...