【发布时间】:2020-07-16 12:18:34
【问题描述】:
我建立了一个库,ldd 显示它引用了libm.so.6:
ldd liba.so
...
libm.so.6 => /lib64/libm.so.6 (0x00007fdf53e85000)
...
但是当我编译我的程序时,我得到:
$ gcc mytest.c -I/path/to/a/header -L/home/path/to/a/so -la
/usr/bin/ld: undefined reference to symbol 'sin@@GLIBC_2.2.5'
//usr/lib64/libm.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
只有当我在后一个命令的末尾附加-lm 时,编译才会成功。
如果libm.so.6 显示为ldd,为什么会这样?为什么错误可能包含/usr/lib64/libm.so.6 而不是/lib64/libm.so.6?谢谢。
【问题讨论】: