标签: compiling

为什么 FreeBSD 弃用 GCC 而支持 Clang/LLVM?

所以我在网上冲浪,偶然发现了这篇文章。它基本上表明FreeBSD从版本 10 及更高版本开始将弃用GCC以支持Clang/LLVM

从我目前在网上看到的情况来看,Clang/LLVM是一个相当雄心勃勃的项目,但在可靠性方面它无法与GCC 相提并论

FreeBSD 选择 LLVM 作为他们的编译器基础设施是否有任何技术原因,或者整个问题归结为永恒的 GNU/GPL 与 BSD 许可证?

这个问题有(以某种方式)关于在FreeBSD 中使用GCC 的相关信息

freebsd compiling c gcc llvm

248
推荐指数
4
解决办法
9万
查看次数

可执行文件在运行时在哪里查找共享对象?

我了解如何在链接/编译时定义包含共享对象。但是,我仍然想知道可执行文件*.so在执行时如何查找共享对象(库)。

例如,我的应用程序a.out调用lib.so库中定义的函数。编译后,我移动lib.so到我的$HOME.

我怎么知道a.out去那里找呢?

compiling path executable dynamic-linking

159
推荐指数
3
解决办法
18万
查看次数

150
推荐指数
3
解决办法
15万
查看次数

我应该把自己编译的软件放在哪里?

我需要在我的 Fedora 机器上编译一些软件。把它放在哪里以免干扰打包软件的最佳位置?

compiling fhs software-installation directory-structure package-management

141
推荐指数
9
解决办法
5万
查看次数

编译自己的 linux 内核有什么好处?

自己编译 Linux 内核有什么好处?您可以通过将其定制为您的硬件来提高效率吗?

linux compiling kernel

110
推荐指数
7
解决办法
4万
查看次数

为什么从源代码构建 tmux 时 gcc 找不到 libevent?

我想在没有 root 访问权限的机器上安装 tmux。我已经编译了 libevent 并安装了它$HOME/.bin-libevent,现在我想编译 tmux,但 configure 总是以 结尾configure: error: "libevent not found",即使我试图Makefile.am通过修改LDFLAGS和指向 libevent 目录CPPFLAGS,但似乎没有任何效果。

如何告诉系统在我的主目录中查找 libevent?

compiling make configure autoconf

70
推荐指数
3
解决办法
5万
查看次数

一些 M4 宏似乎没有定义

我正在尝试在我的 Arch Linux 发行版上重新安装 pacman。当我运行配置脚本“configure.ac”时,我得到一堆未定义的宏:

error: possibly undefined macro: AM_INIT_AUTOMAKE.
If this token and others are legitimate, please use m4_pattern_allow.
See the autoconf documentation.
error: possibly undefined macro: AC_PROG_LIBTOOL
error: possibly undefined macro: AM_GNU_GETTEXT 
error: possibly undefined macro: AM_GNU_GETTEXT_VERSION
error: possibly undefined macro: AM_CONDITIONAL
Run Code Online (Sandbox Code Playgroud)

有谁知道什么会导致这些宏未定义?来自 Ubuntu(一切正常,因此很无聊),我真的不了解 automake。

compiling autoconf

65
推荐指数
4
解决办法
6万
查看次数

在 Linux 的一种“风格”上编译的 Linux 可执行文件会在不同的 Linux 上运行吗?

一个非常简单的小程序的可执行文件,比如下面显示的,在一种 Linux 上编译的,它会在不同的 Linux 上运行吗?还是需要重新编译?

在这种情况下,机器架构重要吗?

int main()
{
  return (99);
}
Run Code Online (Sandbox Code Playgroud)

linux compiling compatibility architecture

65
推荐指数
6
解决办法
2万
查看次数

如何从头编译C编译器,然后从头编译Unix/Linux

假设我在美国/英国以外的一家大型服务机构工作。我们广泛使用 UNIX 和 Linux 服务器。

通读这篇文章,它提到将后门插入 C 编译器很容易,然后用该编译器编译的任何代码也将包含后门。现在鉴于最近有关 NSA/GCHQ 授权在所有加密方法、硬件和软件中放置后门/弱点的泄密事件,编译器现在是一个关键的故障点。可能所有标准的 UNIX/Linix 发行版都可能受到损害。我们不能让流氓政府损害我们的系统、数据和客户数据。

鉴于这些信息,我想从头开始构建一个受信任的编译器,然后我有一个安全的基础来构建,这样我就可以使用该编译器从源代码构建操作系统和应用程序。

从源代码编译编译器(一个看似鸡生蛋的场景)然后从头开始编译受信任的 Unix/Linux 发行版的正确(和安全方法)是什么?

您可以假设我或其他人有能力阅读和理解安全漏洞的源代码,因此在编译之前将首先审查源代码。我真正想要的是一份从头开始安全地生成这个编译器的工作指南,可用于编译内核、操作系统的其他部分和应用程序。

如果我们要对在该堆栈上运行的操作系统或应用程序有任何信心,安全堆栈必须从基础级别开始。是的,我知道可能存在硬件后门,它们可能会在编译器构建时将一些微代码插入到编译器中。除了可能使用不是在美国设计的芯片之外,我们目前对此无能为力。让我们先对这一层进行排序,并假设我可以在插入任何后门之前在旧计算机上构建它。

正如布鲁斯·施奈尔 (Bruce Schneier) 所说:“我对工程师们说:我们建立了互联网,我们中的一些人帮助颠覆了它。现在,我们这些热爱自由的人必须修复它。”

额外链接:

linux compiling kernel compiler gcc

64
推荐指数
3
解决办法
4685
查看次数

从源代码构建和使用安装包有什么区别?

我想知道:在安装某些东西时,有一种双击安装可执行文件的简单方法,另一方面,有一种从源代码构建它的方法。

后一个,下载一个源包,真的很麻烦。

但是这两种方法之间的根本区别是什么?

compiling source software-installation

59
推荐指数
4
解决办法
5万
查看次数