2010-09-06 59 views
1

嗯,我正在用Ubuntu 10.04.1(Intel Core2Quad)LTS开发一个C++程序,但是这些发行版在Debian 5.0.5(Intel(R)Xeon(R)CPU)中运行。一些库如crypto ++或mysqlclient在两个操作系统中都有不同的版本。所以我决定静态编译二进制文件,在Ubuntu中静态编译所有库,然后将完成的二进制文件上传到Debian。静态库机器是独立的吗?

我不知道这个方法是否正确,因为静态库可能是依赖于体系结构的,并且可能会在Debian机器中发生冲突。如果我想在Debian中使用Ubuntu的新库版本,我应该在Debian中编译它们吗?

在此先感谢

回答

2

它们依赖于体系结构。通常情况下,库被编译为x86机器上的通用体系结构,例如i686,它可以在Intel Xeon和Intel Core2Quad上运行良好(但不能在例如旧的Intel Pentium处理器上运行)

2

不,它不是机器独立的。唯一的区别是所有的库都与可执行文件捆绑在一起,所以程序不会因“未找到库”消息而加载失败。总之,它适用于所有的Linux发行版,但它不适用于Windows。

+0

当然,但也许捆绑的库已针对不同的体系结构和分发进行了优化。所以,如果我在Ubuntu中编译所有可执行文件,然后在Debian中运行,也许会崩溃。我通常使用./存储在/ usr/lib,/ lib中的库,因此我不确定用于由apt下载的那些库的编译器标志。 – JoniPichoni 2010-09-06 11:43:50

+0

检查包含.a文件的包的.deb文件? Ubuntu .debs通常是i386,i586,i686 .deb文件,针对相应的体系结构进行了优化。 – nos 2010-09-06 11:47:26

+0

好的,非常感谢 – JoniPichoni 2010-09-06 11:58:15