在Mac OS X上静态链接libstdc ++

时间:2013-12-10 14:01:19

标签: static g++ libstdc++

我想在Mac OS X 10.8.4上静态链接libstdc ++,以便二进制文件可以在其他系统中使用。

我找到了一些关于linux的讨论。我想知道Mac OS X的说明是什么。

http://www.trilithium.com/johan/2005/06/static-libstdc/

我有以下GCC。

i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

1 个答案:

答案 0 :(得分:2)

我不知道你所支持的这个方法是否支持gcc 4.2.1,但是在OS X 10.9上类似情况下这对我有用:

  • 升级到最新的Xcode命令行工具(我有5.0.1.0.1.1382131676)
  • 安装Homebrew
  • brew tap versions
  • brew install gcc48
  • 然后使用以下命令配置/构建您的软件:

    CC=gcc-4.8 CXX=g++-4.8 LDFLAGS="-static-libgcc -static-libstdc++"

在Homebrew的这个gcc 4.8版本中,我可以使用静态标志,结果可执行文件看起来像:

$ otool -L seqdb-compress
seqdb-compress:
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

没有libgcc或libstdc ++动态库。我还没有在不同的OS X系统上测试这些可执行文件,但如果它们由于任何原因不起作用,它将更新这篇文章。