Pan*_*dya 14 compiling packaging package-management binary deb
我想获取有关二进制包的详细信息并在 linux 上运行它们。我正在运行 Debian 基础(Ubuntu/Linux mint)Linux 操作系统。
gol*_*cks 23
从严格意义上讲,二进制文件是一种非字符编码为人类可读文本的文件。更通俗地说,“二进制”是指经过编译的可执行代码文件,尽管文件本身可能不可执行(与其说是指权限,不如说是指单独运行的能力;一些二进制代码文件,例如库是编译,但不管权限如何,它们都不能自己执行)。作为独立可执行文件运行的二进制文件是“可执行文件”,尽管并非所有可执行文件都是二进制文件(这与权限有关:可执行文本文件通过 shebang 调用解释器,例如#!/bin/sh
可执行文件)。
什么是二进制包?
linux 上下文中的二进制包是一个应用程序包,其中包含(预构建的)可执行文件,而不是源代码。
请注意,这并不意味着包文件本身就是一个可执行文件。包文件是.zip
包含其他文件的存档(有点像),而“二进制”包文件是专门包含可执行文件的文件(尽管同样,可执行文件不一定是真正的二进制文件,实际上二进制包可用于编译的库是二进制代码,但不是可执行文件)。但是,必须解压缩包才能访问这些文件。
通常这是由软件包管理系统(例如 apt/dpkg)为您处理的,该系统会为您下载软件包并解压缩并安装其中的二进制文件。
二进制包和 deb 包有什么区别?
没有——.deb
包是二进制包,虽然有.deb
s 包含源代码,但这些通常-src
附加到它们的名称之后。
我运行一些“xyz.linux.run”格式的直接包这些包是什么?
这些通常是自解压二进制包;它们通过将二进制有效负载嵌入到 shell 脚本中来工作。“自解压”意味着您不必调用另一个应用程序(例如包管理器)来解压和使用它们。然而,由于它们不与包管理器一起工作,解决它们的依赖关系可能更像是一个垃圾,因此一些这样的包使用静态链接的可执行文件(它们内置了所有必要的库),这在使用时会浪费一点内存.
小智 7
由于您的其余问题是由金发姑娘回答的,因此我将权衡第一部分,即如何从源头构建事物。
真正简短的版本是,当您从 Internet 下载源文件时,它们通常会有一个相关的自述文件,它应该告诉您如何启动和运行程序。
但是告诉您阅读自述文件并不能真正回答问题,因此从基本意义上讲,您可以编写一个非常基本的程序,即
#include <stdio.h>
int main( ) {
printf("Hello World!");
}
Run Code Online (Sandbox Code Playgroud)
并输入gcc helloWorld.c
并gcc
构建该二进制文件并输出一个写入“Hello World!”的程序。运行时到控制台。
好的,现在您已经构建了一个程序,但是每次需要编译某些东西时都必须键入要编译的每个源文件,这不是很糟糕吗?那makefiles
是为了什么。如果跨有一堆的源文件通常会用一个makefile文件或其他一些构建自动化文件(的程序运行ant
,Cmake
或autoconf
什么的)。
要构建这些类型的程序,只需make <build target>
在目录中运行即可。我的 hello world 程序的 makefile 可能包含一个被调用的目标helloworld
,它只编译 helloWorld.c。我会运行它make helloworld
,它会输出一个二进制文件。
请注意,从源代码构建东西可能需要很长时间和大量内存(Chromium 团队甚至建议使用第二块硬盘来构建他们的源代码!)。还要注意,当你从源代码构建东西时,你将不得不处理依赖关系,而不是包管理器为你做
归档时间: |
|
查看次数: |
54017 次 |
最近记录: |