C++ Boost Extension Reflection非bjam编译官方样本时如何修复分段错误?
所以我 描述了我现在使用的trobules示例。这是我的代码端口(、常规和)。当我在linux下编译这个示例时,它会找到库,但在执行时失败。当我在Windows上编译它时,同样的事情也会发生 我已经尽了最大努力,尽量不改变 那么,代码有什么问题,为什么会失败,唯一重要的是——如何修复它 那么如何使用premake构建这些东西:C++ Boost Extension Reflection非bjam编译官方样本时如何修复分段错误?,c++,boost,segmentation-fault,boost-extension,C++,Boost,Segmentation Fault,Boost Extension,所以我 描述了我现在使用的trobules示例。这是我的代码端口(、常规和)。当我在linux下编译这个示例时,它会找到库,但在执行时失败。当我在Windows上编译它时,同样的事情也会发生 我已经尽了最大努力,尽量不改变 那么,代码有什么问题,为什么会失败,唯一重要的是——如何修复它 那么如何使用premake构建这些东西: 你得到 然后将其放入从svn下载的文件夹中 您应该已经编译并安装了官方Boost(请阅读我们在目录中提供的ReadMe.txt文件),因此需要: (我们使用1.4.16
- (我们使用1.4.16版进行了测试)
- (我们使用,我们将其作为boost'boost/extension/
'的一部分来处理,我们必须制作一些Chande(实际上只有一个)来增强扩展,所以我们在***
文件夹中提供了它,所以当您下载svn时,它只有页眉部分。)boost.extension.Tutorial/libs/boost/extension/
- Boost Reflection(我们使用它,我们使用它,我们将它作为Boost'Boost/Reflection/
'*的一部分来处理,为了简单起见,我们建议将它放入***
*)Boost.Extension.Tutorial/libs/Boost/Reflection
Boost.extension.Tutorial/libs/Boost
文件夹中,premake4可执行文件位于Boost.Extension.Tutorial/
文件夹中,我们只需在windows上调用Boost.Extension.Tutorial/premake4 build windows.bat
即可获取Visual Studio的sln,或调用Boost.Extension.Tutorial/premake build.sh
即可获取生成文件李>
GCC-v
)的详细信息:
我的windows是带有Visual Studio Team System 2008 Team Suite的标准windows 7
我的boost是手动编译和安装的1.46.1版本。在配置上必须有所不同,因为这是我测试的结果:
更新 我已经在32位linux上用
- ubuntu gcc 4.4.5,boost 1.42.0
- ubuntu gcc 4.5.1,boost 1.42.0
- debian gcc 4.5.2-8,boost 1.46.1.1
- debian gcc 4.6.1 20110428(预发布),boost 1.46.1.1
- gcc 4.5.0 20100604,boost 1.42.0.7.1.1(来自yast2回购协议)
- gcc 4.5.0 20100604,boost 1.46.1(来源)
- 错误的库路径(动态加载(旧?)so的不兼容版本)
- 使用了错误的标题(导致不兼容的构建od so)
bt
命令查看其位置。此外,您还可以使用strace
精确查看从何处加载的文件,以便发现任何冲突的库版本。干杯。。。今天我们终于让它在Windows和Linux上都可以编译了。。。实际上,windows不喜欢—我们用来提供反射贴图的函数是在提供的贴图的副本上操作的—而不是在引用上。现在它在参考上运行-在Windows和Linux下都能完美工作=)今天可能会测试MacOSX。。。
rupert@linux:~> gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i586-suse-linux/4.5/lto-wrapper
Target: i586-suse-linux
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.5 --enable-ssp --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --program-suffix=-4.5 --enable-linux-futex --without-system-libunwind --enable-gold --with-plugin-ld=/usr/bin/gold --with-arch-32=i586 --with-tune=generic --build=i586-suse-linux
Thread model: posix
gcc version 4.5.0 20100604 [gcc-4_5-branch revision 160292] (SUSE Linux)