- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何使用当前版本逐个安装 GCC(GNU 编译器集合)
使用正确版本的依赖项,不使用包管理器(如 yum、rpm、apt、dpkg),并且不使用共享库?
典型的开发人员可能希望以典型的方式安装 GCC,使用包管理器(yum、rpm、apt、dpkg、port、brew 等)或按照此处的说明进行操作 ( http://gcc.gnu.org/wiki/InstallingGCC )。
我的问题是如何在没有共享库的情况下逐段安装GCC。
GCC 取决于:
最佳答案
如果您是一名典型的开发人员,您可以按照 http://gcc.gnu.org/wiki/InstallingGCC 中的说明进行简单的安装。或您的系统包管理器,例如:
apt install gcc # for Debian, Ubuntu, etc.
yum install gcc # for RedHat, CentOS, etc.
brew install gcc # for Mac OS X
GCC 表示这里的答案是“困难的方法”,因为它一步步构建所有内容,并且不使用共享库。
获取 GCC 基础设施:
ftp://gcc.gnu.org/pub/gcc/infrastructure/
将下载内容放在临时目录中(您可以使用任何您想要的目录)。
/opt/downloads
在与下载目录或其子目录不同的临时目录中构建基础结构:
/tmp/gcc
使用静态库配置基础设施,如下所示:
./configure --disable-shared --enable-static --prefix=/tmp/gcc
根据您的需要,--disable-shared 标志可能值得仔细研究。我使用 --disable-shared 因为我只构建静态代码,并且我想确保我不构建任何共享代码。我的需要是轻松地在我的驱动器中移动生成的 GCC,所以我想要所有静态代码,并且我不想要任何共享代码。如果您更喜欢共享代码,请省略 --disable-shared 标志。
当您运行此答案中的任何命令时,请务必更新命令以使用符合您需求的当前 GCC 版本号。此答案中的命令适用于 GCC 4.6.2。
请注意,GCC 文档说:“虽然所需工具的任何足够新的版本通常都可以工作,但库要求通常更严格。较新的版本在某些情况下可能可以工作,但使用记录的确切版本更安全。”
GMP 是 GNU 多精度算术库。
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
bunzip2 gmp-4.3.2.tar.bz2
tar xvf gmp-4.3.2.tar
cd gmp-4.3.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install
MPFR 是 GNU 多精度浮点舍入库。这取决于 GMP。
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
bunzip2 mpfr-2.4.2.tar.bz2
tar xvf mpfr-2.4.2.tar
cd mpfr-2.4.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc
make && make check && make install
MPC 是 GNU 多精度 C 库。这取决于 GMP 和 MPFR。
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
tar zxvf mpc-0.8.1.tar.gz
cd mpc-0.8.1
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc --with-mpfr=/tmp/gcc
make && make check && make install
ELF 代表可执行和可链接格式。该库提供与体系结构无关的大小和字节序支持。
wget http://www.mr511.de/software/libelf-0.8.13.tar.gz
tar zxvf libelf-0.8.13.tar.gz
cd libelf-0.8.13
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install
GCC 是 GNU 编译器集合。这取决于 GMP、MPFR、MPC 和 ELF。
wget http://www.netgull.com/gcc/releases/gcc-4.6.2/gcc-4.6.2.tar.gz
tar zxvf gcc-4.6.2.tar.gz
在临时目录中构建 gcc相同的挂载点。 (在/tmp 中构建它会触发交叉编译主机问题)
mkdir -p /opt/downloads/gcc-4.6.2-scratch
cd /opt/downloads/gcc-4.6.2-scratch
配置命令及其标志必须全部位于一个命令行上(本文将它们显示在单独的行上,只是因为网页宽度)。
注意:我们使用完整路径来配置,不设置库路径环境变量。我们选择禁用 Bootstrap 和禁用共享库,因为我们不想要它们(典型用户可能想要两者),并使用 posix 线程和默认标志,因为我们想要它们(典型用户可能想要使用其他线程或跳过默认标志)。 YMMV 并阅读有关标志 here 的信息
/opt/downloads/gcc-4.6.2/configure
--disable-shared
--disable-bootstrap
--disable-libstdcxx-pch
--enable-languages=all
--enable-libgomp
--enable-lto
--enable-threads=posix
--enable-tls
--with-gmp=/tmp/gcc
--with-mpfr=/tmp/gcc
--with-mpc=/tmp/gcc
--with-libelf=/tmp/gcc
--with-fpmath=sse
make && make install
此页面非常适合 GCC 安装信息、如何构建它、各种标志等等:
http://www.acsu.buffalo.edu/~charngda/cc_build.html
ppl 库可用于内存优化:请参阅 bugseng.com/products/ppl/Download(感谢评论中的 Paul)
您可以从 gcc 源目录运行 ./contrib/download_precessions。 (感谢 reddit 上的 N7P)
关于gcc - 如何在没有共享库的情况下使用 GMP、MPFR、MPC、ELF 逐个安装 GCC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9450394/
我是 Java 新手,这是我的代码, if( a.name == b.name && a.displayname == b.displayname && a.linknam
在下面的场景中,我有一个 bool 值。根据结果,我调用完全相同的函数,唯一的区别是参数的数量。 var myBoolean = ... if (myBoolean) { retrieve
我是一名研究 C++ 的 C 开发人员: 我是否正确理解如果我抛出异常然后堆栈将展开直到找到第一个异常处理程序?是否可以在不展开的情况下在任何 throw 上打开调试器(即不离开声明它的范围或任何更高
在修复庞大代码库中的错误时,我观察到一个奇怪的情况,其中引用的动态类型从原始 Derived 类型更改为 Base 类型!我提供了最少的代码来解释问题: struct Base { // some
我正在尝试用 C# 扩展给定的代码,但由于缺乏编程经验,我有点陷入困境。 使用 Visual Studio 社区,我尝试通过控制台读出 CPU 核心温度。该代码使用开关/外壳来查找传感器的特定名称(即
这可能是一个哲学问题。 假设您正在向页面发出 AJAX 请求(这是使用 Prototype): new Ajax.Request('target.asp', { method:"post", pa
我有以下 HTML 代码,我无法在所有浏览器中正常工作: 我试图在移动到
我对 Swift 很陌生。我如何从 addPin 函数中检索注释并能够在我的 addLocation 操作 (buttonPressed) 中使用它。我正在尝试使用压力触摸在 map 上添加图钉,在两
我设置了一个详细 View ,我是否有几个 Nib 文件根据在 Root View Controller 的表中选择的项目来加载。 我发现,对于 Nibs 的类,永远不会调用 viewDidUnloa
我需要动态访问 json 文件并使用以下代码。在本例中,“bpicsel”和“temp”是变量。最终结果类似于“data[0].extit1” var title="data["+bpicsel+"]
我需要使用第三方 WCF 服务。我已经在我的证书存储中配置了所需的证书,但是在调用 WCF 服务时出现以下异常。 向 https://XXXX.com/AHSharedServices/Custome
在几个 SO 答案(1、2)中,建议如果存在冲突则不应触发 INSERT 触发器,ON CONFLICT DO NOTHING 在触发语句中。也许我理解错了,但在我的实验中似乎并非如此。 这是我的 S
如果进行修改,则会给出org.hibernate.NonUniqueObjectException。在我的 BidderBO 类(class)中 @Override @Transactional(pr
我使用 indexOf() 方法来精细地查找数组中的对象。 直到此刻我查了一些资料,发现代码应该无法正常工作。 我在reducer中尝试了上面的代码,它成功了 let tmp = state.find
假设我有以下表格: CREATE TABLE Game ( GameID INT UNSIGNED NOT NULL, GameType TINYINT UNSIGNED NOT NU
代码: Alamofire.request(URL(string: imageUrl)!).downloadProgress(closure: { (progress) in
我是一名优秀的程序员,十分优秀!