我正在尝试使用SoX创build一个audio文件,虽然我可以很容易地在Linux机器上编译我使用的源文件,但是我需要将这个二进制文件转移到另一台具有有限权限和内存的Linux机器上。 我试图从我的机器上的usr / local / bin文件夹复制二进制到另一个,它无法find函数引用。
有没有一种标准的方式来编译二进制文件没有依赖关系,如果没有,如何设置SoX二进制文件,以便它看到正确的依赖关系,当我只有在临时文件夹的写权限?
您可以编译,将-static
标志添加到Makefile
的编译选项中。 但要注意两个(或更多)Linux工作站之间的glibc
版本有什么不同。 你想要确保你用较旧的(或最老的)内核在工作站上进行编译,否则你的二进制文件可能无法工作,因为依赖于较新的内核,这是旧版Linux的安装所无法实现的。 所以:基本上,编译您的最古老的机器,以获得更好的结果
在不依赖的情况下生成可执行文件所需的最重要的事情就是这个可执行文件将使用的所有库的静态版本。 通常,库也是共享的,这意味着如果他们需要调用另一个库的函数,他们使用共享链接。 为了不获得二级依赖关系,需要静态编译所有必需的库。