在 $make 之后我是否需要将所有文件传输到 /usr/local/bin 还是仅将可执行文件传输到?

在 $make 之后我是否需要将所有文件传输到 /usr/local/bin 还是仅将可执行文件传输到?

我知道这可能是一个无知的问题,但我一直在想:make在 Linux 软件上下载并运行后(例如https://github.com/scapella/trimal)-我需要复制到usr/local/bin可执行文件吗仅有的或可执行文件以及所有其他文件在运行后创建的目录中make

我怎么知道只复制可执行文件就足够了?即使它正在运行,我怎么知道它运行正常,而它不需要找到我最初运行的路径,make 我问这个问题是因为很多时候这并不清楚……

谢谢

答案1

您只需将可执行文件复制到您的某个位置,PATH例如/usr/local/bin/~/bin/

一般来说,软件可能会安装以下部分或全部内容:

  • 可执行文件到合适的bin/目录
  • 共享库文件到合适的lib/目录
  • 文档到和man/info/目录
  • 配置文件etc/
  • 其他文件到share/目录

在这种情况下,开发人员通常会提供一个install目标(运行为make install)来将文件分发到适当的目录中。

就软件而言,除了三个可执行文件、和trimal之外,似乎没有任何可安装的内容,并且没有提供任何目标。trimalreadalstatalinstall

答案2

之后要做什么make通常由开发人员描述

例如,请参阅自述文件.md位于源根文件夹中的文件:

默认情况下,“make”会在当前目录中编译 trimAl 和 readAl 的源代码。之后,您可以将当前目录添加到 PATH,或使用 root 权限将这些文件移动到“/usr/local/bin”或“/usr/bin”。

如果您构建的是驱动程序模块而不是“经典”可执行文件,则路径不是,bin/而是/etc/modules因为在启动时由内核读取。等等。

答案3

一般来说,一个干净编程的开源项目应该make install为您提供一个目标:用户不需要知道将哪些文件复制到哪里。

在那个项目中,他们没有经历这些麻烦;他们甚至没有提供任何说明。我认为这是马虎和不专业的。

makefile我们做出有根据的猜测:

https://github.com/scapella/trimal/blob/trimAl/source/makefile#L15

这样就构建了 3 个可执行文件。它们不需要太多库:

https://github.com/scapella/trimal/blob/trimAl/source/makefile#L15

仅有的库姆,每个系统上都会安装的数学库。

您当然不想要这些.o文件;这些是链接二进制文件所需的编译目标文件。

不过你可能需要脚本:

https://github.com/scapella/trimal/tree/trimAl/scripts

有些在标题中包含一些文档,说明它们的作用。其他地方可能还有一些关于整个项目的附加文档,但官方项目网站https://trimal.cgenomics.org/好像已经下降了。

相关内容