那么为什么你可以直接去使用一个你没有声明也没有定义的函数呢?
回答: 因为这个函数在我们lib动态库中,动态库中有这个内容,而且系统动态库已经被载入内存了
ldd a.out
可以看到我们a.out依赖了三个库,所以其实printf的实现是在库里,我们运行的时候再加载的,这三个库是libc库,里面有常见库函数的实现。
使用nm指令验证是否在库里: nm -D /lib/x86_64-linux-gnu/libc.so.6 | grep printf
2023-09-29 20:53:46
那么为什么你可以直接去使用一个你没有声明也没有定义的函数呢?
回答: 因为这个函数在我们lib动态库中,动态库中有这个内容,而且系统动态库已经被载入内存了
ldd a.out
可以看到我们a.out依赖了三个库,所以其实printf的实现是在库里,我们运行的时候再加载的,这三个库是libc库,里面有常见库函数的实现。
使用nm指令验证是否在库里: nm -D /lib/x86_64-linux-gnu/libc.so.6 | grep printf