1

我尝试构建基于 CppCMS 的网页。它在 Gentoo (GCC) 下编译和工作。但是我在尝试在 FreeBSD 下构建应用程序时遇到了问题(托管服务提供商的帐户)。默认编译器是 Clang。

我下载了 CppCMS 包并导出了几个变量:

export CC=gcc48
export CXX=g++48
export LD_LIBRARY_PATH=/usr/local/lib/gcc48

然后像往常一样:

cmake -DCMAKE_INSTALL_PREFIX=/home/mrozigor/libs ..
make

此时可能有问题,因为它在所有测试(make test)中都失败了,并且出现了分段错误。但我试图构建我的应用程序并使用命令:

PATH=$HOME/libs/bin:$PATH CPATH=$HOME/libs/include:$CPATH LIBRARY_PATH=$HOME/libs/lib:$LIBRARY_PATH ./build.sh

它构建它。但是当试图执行它(LD_LIBRARY_PATH=$HOME/libs/lib app)时,它也会因 SEGFAULT 而失败。

当我尝试ldd libcppcms.so在 CppCMS 构建目录中执行命令时也很有趣,它失败了ldd: libcppcms.so: Shared object "libcppcms.so" not found, required by "ldd",但是当在 lib 安装目录中尝试相同的命令时,它指向正确的对象。

这是链接某些库的问题吗?或者也许一些环境变量指向一些 Clang 依赖项等?

[编辑]

尝试使用选项: cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/home/mrozigor/libs -DCMAKE_C_COMPILER=gcc49 -DCMAKE_CXX_COMPILER=g++49 -DCMAKE_LIBRARY_PATH=/usr/local/lib/gcc49 .. LD_LIBRARY_PATH=/usr/local/lib /gcc49 使 LD_LIBRARY_PATH=/usr/local/lib/gcc49

仍然具有给定回溯的 SEGFAULTs,基于转储文件:

#0  0x0000000000000000 in ?? ()
#1  0x0000000802d3fc49 in __cxxabiv1::__dynamic_cast (src_ptr=0x80300f3c0 <(anonymous namespace)::ctype_c>, src_type=0x802ff35d0 <typeinfo for std::locale::facet>, dst_type=0x802ff3340 <typeinfo for std::ctype<char>>, src2dst=0) at /wrkdirs/usr/ports/lang/gcc/work/gcc-4.9.4/libstdc++-v3/libsupc++/dyncast.cc:60
#2  0x0000000802d76477 in std::has_facet<std::ctype<char> > (__loc=...) at /wrkdirs/usr/ports/lang/gcc/work/.build/x86_64-portbld-freebsd10.3/libstdc++-v3/include/bits/locale_classes.tcc:110
#3  0x0000000802d67658 in std::basic_ios<char, std::char_traits<char> >::_M_cache_locale (this=this@entry=0x606448 <std::cout@@GLIBCXX_3.4+8>, __loc=...) at /wrkdirs/usr/ports/lang/gcc/work/.build/x86_64-portbld-freebsd10.3/libstdc++-v3/include/bits/basic_ios.tcc:159
#4  0x0000000802d67824 in std::basic_ios<char, std::char_traits<char> >::init (this=this@entry=0x606448 <std::cout@@GLIBCXX_3.4+8>, __sb=0x80300d7c0 <__gnu_internal::buf_cout_sync>) at /wrkdirs/usr/ports/lang/gcc/work/.build/x86_64-portbld-freebsd10.3/libstdc++-v3/include/bits/basic_ios.tcc:132
#5  0x0000000802d56d51 in std::basic_ostream<char, std::char_traits<char> >::basic_ostream (__sb=<optimized out>, this=<optimized out>, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /wrkdirs/usr/ports/lang/gcc/work/.build/x86_64-portbld-freebsd10.3/libstdc++-v3/include/ostream:85
#6  std::ios_base::Init::Init (this=<optimized out>) at /wrkdirs/usr/ports/lang/gcc/work/gcc-4.9.4/libstdc++-v3/src/c++98/ios_init.cc:91
#7  0x000000080112c941 in __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at /usr/local/lib/gcc49/include/c++/iostream:74
#8  0x000000080112c98c in _GLOBAL__sub_I_posix_time.cpp(void) () at /home/mrozigor/src/cppcms/booster/lib/ptime/src/posix_time.cpp:101
#9  0x000000080060ab77 in ?? () from /libexec/ld-elf.so.1
#10 0x000000080060a0ee in ?? () from /libexec/ld-elf.so.1
#11 0x0000000800608439 in ?? () from /libexec/ld-elf.so.1
#12 0x0000000000000000 in ?? ()
4

0 回答 0