首页 > 解决方案 > 创建可执行文件时未定义的引用问题

问题描述

我正在尝试使用一些库创建可执行文件。我的 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/”中有带有上述符号的库..但仍然看到问题。

任何人请帮助。

标签: cgccmakefilegnu-make

解决方案


错误消息说libdenpli.so需要链接另一个提供符号的共享库ktlTcl_InitStubsktlitclStubsPtr.

使用以下命令查找提供这些符号的共享库:

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>

推荐阅读