- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在这里使用命令行在 OS X 10.11.1 上构建 GCC(最新版本):
../gccx/configure --with-gmp="/opt/local" --with-mpfr="/opt/local" \
--with-mpc="/opt/local" --with-libiconv-prefix="/opt/local" --with-pkgversion="GCCX" \
--program-transform-name='s/^gcc$/gccx/; s/^g++$/g++x/' --enable-languages=c
g++ -std=gnu++98 -g -DIN_GCC -fno-strict-aliasing
-fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wno-format -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fno-common -DHAVE_CONFIG_H -DGENERATOR_FILE -fno-PIE -Wl,-no_pie -o build/genmatch \
build/genmatch.o ../build-x86_64-apple-darwin15.0.0/libcpp/libcpp.a build/errors.o build/vec.o build/hash-table.o ../build-x86_64-apple-darwin15.0.0/libiberty/libiberty.a Undefined symbols for architecture x86_64: "_iconv", referenced from:
convert_using_iconv(void*, unsigned char const*, unsigned long, _cpp_strbuf*) in libcpp.a(charset.o)
(maybe you meant: __Z14cpp_init_iconvP10cpp_reader, __cpp_destroy_iconv ) "_iconv_close", referenced from:
__cpp_destroy_iconv in libcpp.a(charset.o)
__cpp_convert_input in libcpp.a(charset.o) "_iconv_open", referenced from:
init_iconv_desc(cpp_reader*, char const*, char const*) in libcpp.a(charset.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[3]: *** [build/genmatch] Error 1 make[2]: *** [all-stage1-gcc] Error 2 make[1]: *** [stage1-bubble] Error 2 make:
*** [all] Error 2
gcc/Makefile
,似乎
BUILD_CPPLIB
变量不包括 $(LIBICONV),因为它在错误发生时处于 stage1 Bootstrap 中。相关部分前面有
# For stage1 and when cross-compiling use the build libcpp which is
# built with NLS disabled. For stage2+ use the host library and
# its dependencies.
build/genmatch
的 stage1 构建正在引用 libcpp,它使用来自 libiconv 的符号。所以这里有些不对劲。
最佳答案
一般讨论;一般交流
在 Mac OS X 上构建 GCC 是一个偶尔令人担忧的过程。多年来,我遇到了各种版本的 GCC 和各种版本的 Mac OS X 的各种问题。你可以在 Install GCC on Mac OS X 中看到我之前所做的解释。 — 用于在 Mavericks 10.9.x(或可能是 Mountain Lion 10.8.x)上构建 GCC 4.8.x;它还报告了在 Mavericks 10.9.x 上成功构建 GCC 4.9.0,但在 Yosemite 10.10.x 上没有这样做。
这是在 Mac OS X 10.11.1 El Capitan 上构建 GCC 5.2.0 的更新配方。
它从使用 XCode 7.1.1 开始——我不知道其他 XCode 的哪个版本是可以的。
请注意 El Capitan具有优胜美地和早期版本中没有的功能 SIP(系统完整性保护)。这意味着您不能在 /usr
下创建任意目录不再。我以前安装在/usr/gcc/vX.Y.Z
; El Capitan 不再允许这样做。因此,一项重大变化是我现在安装在 /opt/gcc/v.X.Y.Z
中。 .
我发现设置 DYLD_LIBRARY_PATH 是有问题的——尤其是在 El Capitan 上。在与过去的重大突破中,我现在根本没有设置它。请注意,脚本取消了它。还要注意,脚本将阶段 1 编译器 CC 和 CXX 显式设置为 /usr/bin/clang
和 /usr/bin/clang++
分别(XCode 编译器)。当前版本的 GCC 需要有能力的 C++ 编译器,而不是(或以及)C 编译器。
我偶尔会遇到 libiconv
的问题,但目前我已经通过没有安装我自己的版本来避开它们。同样,我偶尔会遇到 GCC 源代码中的一些 awk 脚本的问题。我必须破解它/他们才能让它正常工作。但是,使用 GCC 5.2.0 源代码的发布副本,我似乎能够直接开箱即用地构建。
如果您只有一个磁盘分区,那么下一点并不重要。如果您有多个磁盘,请确保目标目录不存在或确保其名称正是您想要的。在工作的机器上(不是 Mac,而是 Linux 机器等),我仍然使用 /usr/gcc/vX.Y.Z
作为“官方”安装位置,但软件最终会出现在一些有足够空间的任意文件系统中,例如 /work4/gcc
, 最终有一个符号链接(symbolic link)这样 /usr/gcc/vX.Y.Z
到达 /work4/gcc/vX.Y.Z
.但是,/work4/gcc/vX.Y.Z
至关重要。在编译 GCC 时不存在,因为它将通过 realpath()
解析名称或其等效项并嵌入 /work4/gcc/vX.Y.Z
进入二进制文件,而不是中性名称 /usr/gcc/vX.Y.Z
.这限制了安装的便携性;它被移动到的任何其他机器都必须有一个目录 /work4/gcc/vX.Y.Z
,即使您要求将其安装在 /usr/gcc/vX.Y.Z
.
使用 XCode 7.1.1 在 Mac OS X 10.11.1 上编译 GCC 5.2.0
我不得不使用 GMP(5.1.3 而不是 6.0.0a)和 ISL(0.14 而不是 0.15)的低版本。更高版本的构建都给我带来了麻烦。
请注意,我将 GMP、MPC、MPFR、ISL 和 Cloog 的库代码(参见 GCC pre-requisites)放在 GCC 源目录中,以便 GCC 构建自己的这些库版本。我发现这是确保 GCC 正确定位这些库的最简单方法。
目标目录:/opt/gcc/v5.2.0
在运行 Intel Core i7、2.3 GHz、16 GiB 1333 MHz DDR3 主内存和 750 GB 5400 rpm 硬盘驱动器的 17"MacBook Pro(2011 年初)上构建时间约为 2h 15m。源占用约 850 MiB;构建树最终大约为 4.6 GiB——你需要足够的磁盘空间。安装的代码最终大约为 420 MiB。
使用的脚本 — extract-gcc-5.2.0.sh
#!/bin/bash
unset DYLD_LIBRARY_PATH
TAR=tar
VER_NUM=5.2.0
GCC_VER=gcc-${VER_NUM}
TGT_BASE=/opt/gcc
TGT_DIR=${TGT_BASE}/v${VER_NUM}
CC=/usr/bin/clang
CXX=/usr/bin/clang++
extract() {
echo "Extract $1"
$TAR -xf $1
}
if [ ! -d "$GCC_VER" ]
then extract ${GCC_VER}.tar.bz2 || exit 1
fi
(
cd ${GCC_VER} || exit
nbncl <<EOF |
cloog 0.18.1 tar.gz
gmp 5.1.3 tar.xz
# gmp 6.0.0 tar.lz
isl 0.14 tar.bz2
# isl 0.15 tar.bz2
mpc 1.0.3 tar.gz
mpfr 3.1.3 tar.xz
EOF
while read file vrsn extn
do
tarfile="../$file-$vrsn.$extn"
if [ ! -f "$tarfile" ]
then echo "Cannot find $tarfile" >&2; exit 1;
fi
if [ ! -d "$file-$vrsn" ]
then
(
set -x
extract "$tarfile" &&
ln -s "$file-$vrsn" "$file"
) || exit 1
fi
done
)
if [ $? = 0 ]
then
mkdir ${GCC_VER}-obj
cd ${GCC_VER}-obj
../${GCC_VER}/configure --prefix="${TGT_DIR}" \
CC="${CC}" \
CXX="${CXX}"
make -j8 bootstrap
fi
nbncl
— 非空白、非注释行
#!/usr/bin/env perl
#
# Non-blank, non-comment lines only
use warnings;
use strict;
while (<>)
{
chomp;
s/\s+$//;
s/\s*#.*$//;
print "$_\n" unless /^$/;
}
关于macos - 在 OS X 10.11 上构建 GCC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33860902/
问题故障解决记录 -- Java RMI Connection refused to host: x.x.x.x .... 在学习JavaRMI时,我遇到了以下情况 问题原因:可
我正在玩 Rank-N-type 并尝试输入 x x .但我发现这两个函数可以以相同的方式输入,这很不直观。 f :: (forall a b. a -> b) -> c f x = x x g ::
这个问题已经有答案了: How do you compare two version Strings in Java? (31 个回答) 已关闭 8 年前。 有谁知道如何在Java中比较两个版本字符串
这个问题已经有答案了: How do the post increment (i++) and pre increment (++i) operators work in Java? (14 个回答)
下面是带有 -n 和 -r 选项的 netstat 命令的输出,其中目标字段显示压缩地址 (127.1/16)。我想知道 netstat 命令是否有任何方法或选项可以显示整个目标 IP (127.1.
我知道要证明 : (¬ ∀ x, p x) → (∃ x, ¬ p x) 证明是: theorem : (¬ ∀ x, p x) → (∃ x, ¬ p x) := begin intro n
x * x 如何通过将其存储在“auto 变量”中来更改?我认为它应该仍然是相同的,并且我的测试表明类型、大小和值显然都是相同的。 但即使 x * x == (xx = x * x) 也是错误的。什么
假设,我们这样表达: someIQueryable.Where(x => x.SomeBoolProperty) someIQueryable.Where(x => !x.SomeBoolProper
我有一个字符串 1234X5678 我使用这个正则表达式来匹配模式 .X|..X|X. 我得到了 34X 问题是为什么我没有得到 4X 或 X5? 为什么正则表达式选择执行第二种模式? 最佳答案 这里
我的一个 friend 在面试时遇到了这个问题 找到使该函数返回真值的 x 值 function f(x) { return (x++ !== x) && (x++ === x); } 面试官
这个问题在这里已经有了答案: 10年前关闭。 Possible Duplicate: Isn't it easier to work with foo when it is represented b
我是 android 的新手,我一直在练习开发一个针对 2.2 版本的应用程序,我需要帮助了解如何将我的应用程序扩展到其他版本,即 1.x、2.3.x、3 .x 和 4.x.x,以及一些针对屏幕分辨率
为什么案例 1 给我们 :error: TypeError: x is undefined on line... //case 1 var x; x.push(x); console.log(x);
代码优先: # CASE 01 def test1(x): x += x print x l = [100] test1(l) print l CASE01 输出: [100, 100
我正在努力温习我的大计算。如果我有将所有项目移至 'i' 2 个空格右侧的函数,我有一个如下所示的公式: (n -1) + (n - 2) + (n - 3) ... (n - n) 第一次迭代我必须
给定 IP 字符串(如 x.x.x.x/x),我如何或将如何计算 IP 的范围最常见的情况可能是 198.162.1.1/24但可以是任何东西,因为法律允许的任何东西。 我要带198.162.1.1/
在我作为初学者努力编写干净的 Javascript 代码时,我最近阅读了 this article当我偶然发现这一段时,关于 JavaScript 中的命名空间: The code at the ve
我正在编写一个脚本,我希望避免污染 DOM 的其余部分,它将是一个用于收集一些基本访问者分析数据的第 3 方脚本。 我通常使用以下内容创建一个伪“命名空间”: var x = x || {}; 我正在
我尝试运行我的test_container_services.py套件,但遇到了以下问题: docker.errors.APIError:500服务器错误:内部服务器错误(“ b'{” message
是否存在这两个 if 语句会产生不同结果的情况? if(x as X != null) { // Do something } if(x is X) { // Do something } 编
我是一名优秀的程序员,十分优秀!