- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在运行 OS-X High Sierra 的 Mac 上,想创建一个单独的 gcc 版本。 Lemme 分享了我花了一周时间才完成的一些过程,以便对其他人有所帮助:
我创建了一个安全目录“gcc”并使用 svn 从 gcc 获取最新的源代码,它在名为“trunk”的子目录中创建。我最初在主干的顶层创建了一个名为“build”的目录。
它不会在没有 4 个依赖项的情况下编译,所以我运行 ./contrib/download 先决条件来获取它们,但它仍然无法编译,所以我分别进入这 4 个目录中的每一个并执行 ./configure, ./make 、./make install 和 ./make 检查。我做了安装部分,因为即使这些依赖项也相互依赖,所以安装似乎是确保可以找到它们的安全方法。后来我发现没有其他方法,尽管有相反的指示......
我成功地构建了依赖项 GMP、MPFR、ISL 和 MPC。然后我回到 ./build 并且 ../configure 成功了,但是构建(make)很快就失败了,说“源目录已经配置;先运行“make distclean there first”。谷歌搜索显示这是在源目录中配置时.我想也许我的主干/构建目录被认为是“在源目录中”,所以我移动了它并再次尝试,同样的事情发生了。当我尝试进入主干并输入“make distclean”时只是说没有规则使目标 distclean。
所以我想,也许是 4 个依赖目录?也许现在它们已安装,可以安全地将它们全部清除?在那里,使 distclean 工作并取出所有东西 - 甚至是我运行的测试。看起来很浪费并且需要预先安装它们,但它起作用了。
回到构建中,make 然后在 make 期间开始了一些严肃的编译工作,但崩溃说“应该包含系统头文件的目录不存在:/usr/include”。
我应该如何引导这个?我在哪里可以找到要复制到/usr/include 中的系统头文件?以后我会遇到缺少 libc 和库的相同问题吗?另外,如果我想在不重建的情况下将其移植到新计算机上,除了可执行文件和头文件之外,我还需要复制什么?我会把它们放在哪里?
感谢您的任何建议...
- 杰夫
最佳答案
我设法使用 Xcode 8.3.3 在 macOS Sierra 上巧妙地构建了 GCC。在您的系统上尝试以下操作。 (如果您有较新版本的 macOS 或较新版本的 Xcode,则可能需要进行一些调整。)
先决条件
$ xcode-select -p
/Users/strager/Applications/Xcode_8.3.3.app/Contents/Developer
$ clang --version
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Users/strager/Applications/Xcode_8.3.3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
$ as --version
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Users/strager/Applications/Xcode_8.3.3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
$ ld -v
@(#)PROGRAM:ld PROJECT:ld64-278.4
configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em (tvOS)
LTO support using: LLVM version 8.1.0, (clang-802.0.42)
TAPI support using: Apple TAPI version 1.33.11
$ # Download GCC's source code.
$ git clone git://gcc.gnu.org/git/gcc.git gcc
$ # I tested the following revision (SVN r278004 from November 9, 2019):
$ (cd gcc && git checkout a9ad50cb8ec15c509d27c1dbd47b76f56d20fb3b)
$ # Download GCC's uncommon dependencies.
$ ./contrib/download_prerequisites
$ # Apply a build fix: https://gcc.gnu.org/ml/gcc-patches/2019-11/msg01109.html
$ patch -p1 <<<EOF
diff --git a/libstdc++-v3/include/bits/alloc_traits.h
b/libstdc++-v3/include/bits/alloc_traits.h
index 55211ac1d72..6ad02df16f7 100644
--- a/libstdc++-v3/include/bits/alloc_traits.h
+++ b/libstdc++-v3/include/bits/alloc_traits.h
@@ -566,7 +566,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif
template<typename _Alloc>
- _GLIBCXX14_CONSTEXPR void
+ _GLIBCXX14_CONSTEXPR inline void
__alloc_on_copy(_Alloc& __one, const _Alloc& __two)
{
typedef allocator_traits<_Alloc> __traits;
@@ -580,7 +580,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Alloc>
- constexpr _Alloc
+ constexpr inline _Alloc
__alloc_on_copy(const _Alloc& __a)
{
typedef allocator_traits<_Alloc> __traits;
@@ -598,7 +598,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif
template<typename _Alloc>
- _GLIBCXX14_CONSTEXPR void
+ _GLIBCXX14_CONSTEXPR inline void
__alloc_on_move(_Alloc& __one, _Alloc& __two)
{
typedef allocator_traits<_Alloc> __traits;
@@ -625,7 +625,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif
template<typename _Alloc>
- _GLIBCXX14_CONSTEXPR void
+ _GLIBCXX14_CONSTEXPR inline void
__alloc_on_swap(_Alloc& __one, _Alloc& __two)
{
typedef allocator_traits<_Alloc> __traits;
EOF
$ # Configure a build directory for a 3-stage build.
$ mkdir gcc-build-release
$ cd gcc-build-release
$ ../gcc/configure \
--disable-werror \
--enable-checking=release \
--enable-languages=c,c++ \
--prefix="${PWD}/../usr" \
--with-native-system-header-dir=/Users/strager/Applications/Xcode_8.3.3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ \
--disable-multilib
$ # Build.
$ flags='-mmacosx-version-min=10.12 -Wa,-mmacosx-version-min=10.5 -iframework /Users/strager/Applications/Xcode_8.3.3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/' ; \
make -w -j9 BOOT_CFLAGS="${flags}" CFLAGS_FOR_TARGET="${flags}" CXXFLAGS_FOR_TARGET="${flags}"
the directory that should contain system headers does not exist: /usr/include
--with-native-system-header-dir=/usr/include
.那个导演不存在。
--with-native-system-header-dir=/Users/strager/Applications/Xcode_8.3.3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/
.
checking whether the C compiler works... no
configure: error: in `/Users/strager/tmp/Projects/gcc/build-release/x86_64-apple-darwin16.7.0/libgomp':
configure: error: C compiler cannot create executables
ld: library not found for -lcrt1.10.6.o
ld: library not found for -ldylib1.o
ld: library not found for -ldylib1.10.5.o
-mmacosx-version-min=
的值提供给链接器驱动程序的信息与 Xcode 中的 SDK 不匹配。
GCC tries to link the wrong objects .
-mmacosx-version-min=10.12
构建阶段 2 和 3 (对于 Xcode 8.3.3 的
MacOSX10.12.sdk
)使用
BOOT_CFLAGS
,
CFLAGS_FOR_TARGET
, 和
CXXFLAGS_FOR_TARGET
制作变量。
0 0x1059a453b __assert_rtn + 129
1 0x1059a940a mach_o::relocatable::CUSection::personalityName(mach_o::relocatable::Parser&, macho_relocation_info > const*) + 170
2 0x1059b8c2e mach_o::relocatable::CUSection::parse(mach_o::relocatable::Parser&, unsigned int, mach_o::relocatable::CUSection::Info*) + 306
3 0x1059b666b mach_o::relocatable::Parser::parse(mach_o::relocatable::ParserOptions const&) + 695
4 0x1059af1c9 mach_o::relocatable::Parser::parse(unsigned char const*, unsigned long long, char const*, long, ld::File::Ordinal, mach_o::relocatable::ParserOptions const&) + 261
5 0x1059d9758 archive::File::makeObjectFileForMember(archive::File::Entry const*) const + 748
6 0x1059d8b8c archive::File::forEachAtom(ld::File::AtomHandler&) const + 238
7 0x1059f2955 ld::tool::InputFiles::forEachInitialAtom(ld::File::AtomHandler&, ld::Internal&) + 533
8 0x1059fe49c ld::tool::Resolver::resolve() + 44
9 0x1059a5289 main + 725
A linker snapshot was created at:
/tmp/libstdc++.6.dylib-2019-10-13-002048.ld-snapshot
ld: Assertion failed: ((parser.sectionForAddress(personalityAddr)->type() == ld::Section::typeCode) && "personality column in __compact_unwind section is not pointer to function"), function personalityName, file /Library/Caches/com.apple.xbs/Sources/ld64/ld64-278.4/src/ld/parsers/macho_relocatable_file.cpp, line 5128.
collect2: error: ld returned 1 exit status
as
) generates __compact_unwind
sections .尽管
GCC linking with -no_compact_unwind
, ld64 验证
__compact_unwind
部分。数据格式错误(导致未知),因此链接器会提示。
__compact_unwind
部分使用
-Wa,-mmacos-version-min=10.5
对于阶段 2 和 3,使用
BOOT_CFLAGS
,
CFLAGS_FOR_TARGET
, 和
CXXFLAGS_FOR_TARGET
制作变量。
Undefined symbols for architecture x86_64:
"__ZSt15__alloc_on_copyISaIcEEvRT_RKS1_", referenced from:
__ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_ in libstdc++.a(string-inst.o)
"__ZSt15__alloc_on_moveISaIcEEvRT_S2_", referenced from:
__ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_ in libstdc++.a(string-inst.o)
"__ZSt15__alloc_on_swapISaIcEEvRT_S2_", referenced from:
__ZN9__gnu_cxx14__alloc_traitsISaIcEcE10_S_on_swapERS1_S3_ in libstdc++.a(string-inst.o)
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
-fno-implicit-templates
导致不创建这些符号,即使它们是必需的。
In file included from ../../../../gcc/libsanitizer/asan/asan_malloc_mac.cpp:64:
../../../../gcc/libsanitizer/sanitizer_common/sanitizer_malloc_mac.inc:20:10: fatal error: CoreFoundation/CFBase.h: No such file or directory
20 | #include
-iframework .../SDKs/MacOSX.sdk/System/Library/Frameworks
构建阶段 2 和 3使用
BOOT_CFLAGS
,
CFLAGS_FOR_TARGET
, 和
CXXFLAGS_FOR_TARGET
制作变量。
关于macos - 在 Mac 上构建 gcc 时遇到问题 - 找不到系统 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52211390/
更新到 Xcode 12.2 后,由于与 Apple Silicon 相关的链接错误,我的项目开始无法编译。我似乎已经修复了大部分问题,但是一个构建静态链接框架的子项目给我带来了问题。然而,具有明显相
我有一台旧的 MacBook Pro,我在其中制作了两个应用程序并提交到应用程序商店。所以基本上签名身份在该机器的钥匙串(keychain)中。在 Mavericks 升级后,我不得不从那台计算机转移
我正在 MAC OSX 10.6 上编写一个示例应用程序,其 gcc 版本为 4.2。我正在使用 gcc 4.2 版编译应用程序。它在同一台机器上工作正常,但在 MAC OSX 10.5 (gcc 4
这是我的简单 mac 地址生成器: private String randomMACAddress(){ Random rand = new Random(); byte[] macA
我一直在寻找一种将十进制 MAC 地址转换为十六进制地址的方法。 例如 170.187.204.0.17.34至AA:BB:CC:00:11:22 . 致Convert HEX to Decimal
我想使用 UISceneSession 的委托(delegate)方法当用户将注意力从应用程序(窗口)移开,然后又回到应用程序(窗口)时,生命周期有助于通知我的 Mac Catalyst 应用程序。
我在签署 Mac 应用程序安装程序时遇到问题,我计划在 Mac 应用商店之外分发该应用程序。我正在使用开发人员安装程序证书来签署应用程序,但它给出了一些错误。下面是我用来签署应用程序的命令。 prod
Mac Catalyst 允许调整窗口大小,有没有办法为 Mac Catalyst 应用程序提供最小窗口大小? 最佳答案 只需将以下代码块添加到您的 application:didFinishLaun
这是一个非常理论性的问题,但对我来说很安静,即我如何进行下一步。 我正在开发一个SwiftUI MacOS应用程序,用户可以在其中上传自己的文件。元数据将存储在CoreData中,而我将文件手动存储在
滑动删除在 maccatalyst 中不起作用。相同的代码在 iPad 上运行良好。 在 maccatalyst 中未调用 UITableview trailingSwipeActionsConfig
我有两台 Mac,在进行 iPad 开发时,如果可以让另一台 Mac 启动模拟器并在构建完成后加载应用程序,我很感兴趣。 如果 iPad 应用程序在一台 Mac 屏幕和 Xcode 的模拟器中运行,所
我有一个用 objective-c 开发的 mac 应用程序。cpp 中还有另一个命令行中间应用程序,它是 native 主机应用程序,用于接收来自 chrome 扩展的消息。每当中间应用程序从扩展程
是否可以使用来自 Comodo 或 Thawte 的代码签名证书来签署应用程序并通过 Gatekeeper,或者我需要为此目的拥有 Mac 开发者订阅? 最佳答案 您必须是 Mac Developer
我正在使用 C++ 和 OpenGL/SDL 编写一个游戏,使用 Visual Studio 作为我的 IDE。我没有 Mac,甚至对这个平台都不熟悉。但我还是想发布给 Mac 用户。 我有三个问题。
我想将 MAC 地址 00163e2fbab7(存储为字符串)转换为其字符串表示形式 00:16:3e:2f:ba:b7。最简单的方法是什么? 最佳答案 使用一种完全迂回的方法来利用现有的一次将两个十
无法连接到Mac上的MySQL工作台。我收到以下错误:无法连接,服务器可能未运行。无法连接到‘127.0.0.1’上的MySQL服务器(61)如有帮助,将不胜感激。。谢谢!
我已经搜索了很长时间,似乎无法找到这个问题的答案。在 SO 上只找到两个问题/答案,但他们仍然没有回答这个问题 ( https://stackoverflow.com/search?q=netcore
我们在 Docker for Mac 中有一个 LoadBalancer 真是太酷了。 我对创建的端口有疑问: apiVersion: v1 kind: Service metadata: nam
我有一个我一直在从事的小型开源 OSX 项目,我想在 App Store 之外分发。 随着即将发布的 Mountain Lion,我想提供一个证书,以减少安装过程中的痛苦。 使用 App Store,
我的一台 Mac 没有互联网连接。我需要使用 docker pull。我的想法是,我将在我的一台具有互联网连接的 Mac 中使用 docker pull,然后将其复制到我没有互联网连接的 Mac。如何
我是一名优秀的程序员,十分优秀!