部署使用GCC 4.6编译的OSX应用程序
Deploy OSX application compiled using GCC 4.6
我正试图在Mac OS-X上移植我的一个项目。
当我使用C++0X开发我的项目时,我需要一个比Xcode(甚至Xcode4)更新的GCC版本,所以我在Snow Leopards Mac上编译了GCC 4.6。
我的项目确实编译得很好,它也在我编译的电脑上启动(OS-X 10.6.7),但当我把它转移到我的MacBook(OS-X 10.5.8)上时,它就不起作用了。
它返回以下错误:
dyld:惰性符号绑定失败:未找到符号:__ZNSo9_M_insertImEERSoT_参考自:/用户/zu/桌面/OgreApp.app/Contents/MacOS/OgreApp应在中:/usr/lib/libstdc++.6.dylib
dyld:找不到符号:__ZNSo9_M_insertImEERSoT_参考自:/用户/zu/桌面/OgreApp.app/Contents/MacOS/OgreApp应在中:/usr/lib/libstdc++.6.dylib
我知道该程序需要GCC 4.6.0的libstdc++.6.dylib,因为该文件包含C++0x函数(尽管我当前的测试没有使用任何C++0x功能),而不是OS-X系统中通常包含的标准libstdc++6.dylib。
所以我尝试了以下方法:
-
指定-isysroot/Developer/SDKs/MacOSX10.5.sdk-mmacosx版本min=10.5,以确保与OS-X 10.5的向后兼容性。但错误依然存在。
-
使用otool-L验证libstdc++6.dylib路径,并使用install_name_tool-change/opt/local/lib/gcc46/libstdc+6.dylib@executable_path/..更改共享库路径/Libraries/libstdc++.6.dylib OgreApp(Libraries文件夹中有一份gcc 4.6.0 libstdc++.6.dylib的副本),这是我之前问题的答案。但错误依然存在。
-
使用-static libgcc-static librstdc++静态链接libstdc++和libgcc。但它仍然返回相同的错误。
由于我的程序使用Ogre框架,我也将上述操作应用于嵌入在Ogre.framework中的Ogre可执行文件,但它不会改变任何内容。
有人能解释我应该如何在另一台安装了旧版本的Mac计算机上部署用非标准libstdc++创建的应用程序吗?
Mac OS X 10.5不包含GCC标准库的兼容副本。如果你想让你的代码在Leopard上运行,你必须修改它,使其在旧版本的GCC下编译,或者你必须……嗯,实际上这是你唯一的选择。
- 如何在 OSX 10.15 中使用 Clang -Wno-nullability-completeness 选项编译整个
- 在 OSX 上编译C++时找不到库
- Cmake Mac OSX库链接问题:在Linux上进行编译,但在Mac上进行了编译
- 如何在OSX上为clang编译 #include < 实验/任意>
- 构建共享对象 - 使用 Ninja 编译适用于 OSX 和 Windows 上的 Ubuntu Crush
- OSX 上的 Apache Ignite 2.0 C++ 无法编译
- 在新OSX上编译旧碳应用
- 代码调用反向函数不会在Ubuntu 18上的G 或Clang 上编译,但神秘地在Mac OSX上使用
- 如何为 OSX 编译 QCustomPlot
- 使用 gcc4.2 在 OsX 10.9 上编译 Qt5.2 项目
- 在 OSX 10.9.1 上使用 g++ 编译时出错:未知类型名称'__darwin_wctype_t'
- 为什么 OSX Mavericks 无法编译我的 GLSL 着色器?
- 无法在osx mavericks上编译tokumx/mongodb
- 从 Windows 编译 OSX 的C++
- 在我的Mac OSX El Capitan上编译带有意外错误的简单C++类
- 提升日志记录无法在 OSX 上编译
- C++程序需要很长时间才能在Mac OSX终端上编译
- 无法在我的 OSX 中编译"hello world" cpp
- 无法在 OSX 上运行编译的 C++ 可执行文件,适用于 Debian
- 如何使用 cmake 在 OSX 上编译 glfw