c - 创建可执行文件时未定义的引用问题
问题描述
我正在尝试使用一些库创建可执行文件。我的 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/”中有带有上述符号的库..但仍然看到问题。
任何人请帮助。
解决方案
错误消息说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>
推荐阅读
- laravel - 如何减少查询 laravel 的数量?
- c# - 包装 ADO.net 的替代方法
- postgresql - 撤销对表的 SELECT 权限
- java - List 中的 Transforming/GroupingBy 值
- angular - Angular - 在自定义组件中渲染组件
- python - lua运行带参数的shell命令不起作用
- ruby-on-rails - Rails - 为什么渲染:js 在生产中不起作用?
- elasticsearch - 同义词、产品名称和带状疱疹
- if-statement - Autohotkey If 语句只产生一个结果
- c++ - 非静态成员引用必须相对于特定对象