|
发表于 2006-9-11 08:51:31
|
显示全部楼层
对应的head文件已经作了相应的变化,bin的代码只要include相应的新的head文件.又因为, head文件的文件名不变,bin的代码不需要改变.
head文件名不变,内容做了改变?改其他东西无所谓,比如加个函数什么的,但是把以前的函数声明改了,是不可能编译的,就像bin需要getA(),你把getA改成getB,当然会提示找不到getA了。如果你不改变getA的声明,而是改getA的代码,这样怎么改都无所谓了,而且bin也不需要编译,直接调用getA好了,因为bin只认接口,这样bin还是可以运行的。(这就是用动态库的一大好处!修改部分不需要编译整个工程!)
但是会使某些bin去皮之后发生了"段错误"~~看来这个过程并不是安全的~~~
再提个问题:因为编译问题(gcc版本和优化选项等问题,其他因素暂不考虑)会导致一个平台编译的libsome.so.2和另一个平台的libsome.so.2会不同,那么如果一个包包含libsome.so.2就会和系统的libsome.so.2冲突(confilct with file from...)。如果直接使用--replacefiles 选项安装会不会有问题呢? 还有,如何打包使rpm不检测这种文件冲突,直接自动覆盖,就像用户输入了--replacefiles一样呢? |
|