我一直认为这argc是标志结束的必要条件,argv但我只是argv[argc] == NULL按照定义学到了这一点.我认为这argc完全是多余的吗?如果是这样,我一直认为C以效率的名义取消冗余.我的假设是错误的还是背后的历史原因?如果原因是历史性的,你能详细说明吗?
将程序与共享对象链接时,ld将确保可以解析符号.这基本上确保了程序与其共享对象之间的接口是兼容的.在阅读了带有依赖关系的动态库的链接后 ,我了解到ld它将下降到链接的共享对象并尝试解析它们的符号.
当共享对象本身链接时,是否已经检查了我的共享对象的引用?
我可以理解在链接时找出一个程序是否具有启动所需的所有部分的吸引力,但是在包构建的上下文中它似乎是无关紧要的,其中共享对象可以单独分发(例如Debian的lib*包) .它引入了对执行构建程序不感兴趣的系统的递归构建依赖性.
在构建共享对象时,我可以信任解析的依赖项吗?如果是这样,在构建程序时使用-unresolved-symbols = ignore-in-shared-libs有多安全?