我正在尝试使用SoX创建一个我创建的音频文件,虽然我可以轻松地在我经常使用的linux机器上编译源文件,但我需要将二进制文件转移到另一台Linux机器上权限和内存有限。我试图将二进制文件从我的机器上的usr / local / bin文件夹复制到另一个文件夹中,但它找不到函数引用。
是否有一种标准的方法来编译没有依赖项的二进制文件,如果没有,我如何设置SoX二进制文件,以便当我在临时文件夹中只有写权限时它会看到正确的依赖项?
答案 0 :(得分:3)
您可以编译,将-static
标志添加到Makefile
中的编译选项中。但要注意两个(或更多)Linux工作站之间glibc
版本的任何差异。您希望确保使用较旧(或最旧)的内核编译(或目标)工作站,或者由于依赖于较新的内核而导致二进制文件无法正常工作,而较旧的Linux安装无法满足这些要求。所以:基本上,在最旧的机器上编译以获得更好的结果。
答案 1 :(得分:2)
生成没有依赖项的可执行文件所需的最重要的事情是此可执行文件将使用的所有库的静态版本。通常,库也是共享,这意味着如果它们需要调用另一个库的函数,它们使用共享链接。要获得二级依赖项,您需要静态编译所有必需的库。