静态链接时boost文件系统的问题

时间:2013-10-03 11:49:47

标签: c++ linux boost

我有以下代码

#include <boost/filesystem.hpp>

class A
{
public:
  A()
  {
    boost::filesystem::path exePath = boost::filesystem::read_symlink("/proc/self/exe");
  }
};

#if defined(GLOBAL_VER) && !defined(LOCAL_VER) 
A a;
#endif

int main()
{
#if !defined(GLOBAL_VER) && defined(LOCAL_VER)
  boost::filesystem::path exePath = boost::filesystem::read_symlink("/proc/self/exe");
#endif
  return 0;
}

我使用标记LOCAL_VERGLOBAL_VER对其进行编译,并静态和动态地链接它。当我动态链接它时,程序运行正常没问题

$ g++ test.cpp -I /boost/ -L /boost/stage/lib/ -lboost_filesystem -lboost_system -DLOCAL_VER -o test ; ./test
$ g++ test.cpp -I /boost/ -L /boost/stage/lib/ -lboost_filesystem -lboost_system -DGLOBAL_VER -o test ; ./test

当我静态链接它时,只有我使用LOCAL_VER编译的版本运行正常,而我用GLOBAL_VER编译的程序崩溃。

$ g++ test.cpp -I /boost/ /boost/stage/lib/libboost_filesystem.a /boost/stage/lib/libboost_system.a -DLOCAL_VER -o test ; ./test
$ g++ test.cpp -I /boost/ /boost/stage/lib/libboost_filesystem.a /boost/stage/lib/libboost_system.a -DGLOBAL_VER -o test ; ./test
Segmentation fault (core dumped)

我在fc17上使用g ++ 4.7.2,并且使用了1.53(我下载并构建了)。知道什么是错的吗?这是一个提升中的错误还是我的代码中有错误?

0 个答案:

没有答案