使用C 11 /最近的G 版本(4.7 / 4.6)的可移植性
Portability with using c++11 / recent g++ versions (4.7/4.6)
我一直在使用G 4.6和G 4.7开发一个程序。我目前正在利用很多C 11个功能。
我做出了这个决定,认为我将能够将libs与子目录中的程序一起捆绑在一起,并使用ld_library_path。从那以后,我发现这导致我的程序进行了segfault。我可能应该早些时候对此进行了一些测试。它似乎是造成它的捆绑的libc.so.6(可能是其他的,但绝对是libc)。
过去,我使用过这种技术,它无法安装libs,并且效果很好,但是我永远不需要将libc和libstdc 与程序一起包含。
是否有解决此问题的方法,还是我必须回头回到较旧的C /libc/libstDC 版本?(以及随附的代码更改的噩梦)
我会避免依靠 LD_LIBRARY_PATH
-将其用于测试或开发而不是生产部署。
而不是与'-Wl,-rpath,$ORIGIN'
链接以创建包含$ORIGIN
的DT_RPATH
标签,这意味着动态链接器将在与可执行文件的同一dir中寻找共享libs(或e.g.使用'-wl,-rpath,-rpath,$ origin/../lib'查看../lib
)
如果程序的任何部分使用G 4.7构建,则需要使用libstdc 。因此,从运行时GCC 4.7。
但是,如果问题出现在libc.so.s.6这不是GCC问题,我的建议是不要尝试包装LIBC ...试图替换系统LIBC可能不是一个好主意。
我会说仅使用G 4.6或4.7,但不是两者。还...ldconfig将尝试使您的程序运行/lib或/usr/lib版本的libc..o,因此,如果您还有另一个,我不确定它将如何工作。因此,也许您应该只使用系统libc。
如果其他人有其他想法,也会发布它们。
- C++Union/Struct位域的实现和可移植性
- 静态库可移植性
- C++:Unicode 字符串文字的可移植性
- 如何使Visual Studio 2017 C++项目在计算机之间更具可移植性
- 在为视频游戏实施基本的二进制序列化时,请担心可移植性
- 重写类以使其更通用,以实现可移植性
- Visual Studio 2015 <=> QtCreator 5 (c++) 代码可移植性
- 通过虚拟接口类导出C 类的可移植性
- 位移位可移植性
- 如何在Visual Studio中进行串行端口编程C++Windows和Linux之间的可移植性?
- 提高 Python 可移植性问题
- 库如何在不同的操作系统之间实现可移植性
- 使用C 11 /最近的G 版本(4.7 / 4.6)的可移植性
- 模板函数实例化的可移植性问题
- XCode、命名空间、C++和代码可移植性
- 嵌入式C++项目 - 需要支持智能指针.可能的可移植性问题
- 使用指针遍历数组的可移植性
- 头文件中内联自由函数的可移植性
- 文件IO中的可移植性问题
- 在不使用元素复制赋值运算符的情况下复制向量 - 可移植性