ldd 显示 libm.so.6 但仍需要与 -lm 链接
ldd shows libm.so.6 but still linking with -lm is needed
我构建了一个库,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
?谢谢。
我构建了一个库,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
?谢谢。