今天在帮同事查看一个问题时, 需要用到ldd, 于是就顺便看了一下ldd的实现. 好在ldd本身只是一个脚本, 而不是executable, 可以直接查看实现的代码. 根据注释: 21 # This is the `ldd' command, which lists what shared libraries are 22 # used by given dynamically-linked executables. It works by invoking the 23 # run-time
linux C 中声明并初始化一个变量const char a[512]="test";后,接着调用了一个静态库中的函数函数test(b);,a并没有传入test函数,但在调用这个函数后a的值就改变了,变成了类似于??@????的乱码. 原来是因为静态库头文件包含错误:静态库也是自己写的,在使用时包含的头文件过期了,与当前版的静态库不匹配,使用与静态库匹配的头文件即可.