PCL和cmake的总线错误10 /库未加载错误

时间:2014-04-04 13:07:12

标签: c++ c++11 cmake point-cloud-library

我使用点云库并尝试使用体素网格对点云进行下采样。当我使用Xcode时,它工作正常,我手动添加了所需的库,但没有使用cmake。该程序使用cmake编译好但如果我运行cmake编译的程序,我会收到以下错误:

$ ./main
$ Bus error: 10

我发现只有在包含pcl/filters/voxel_grid.h时才会出现错误。我之前在程序中使用了其他类的PCL,并且cmake的一切正常。

如果还想到如果包含pcl/filters/voxel_grid.h并从我的cmake文件中删除set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11"),程序将编译并运行正常,就像在Xcode中一样(Xcode中的语言方言设置为C ++ 11)。问题是,我需要c ++ 11的功能,还需要cmake,因为我需要能够在不同的操作系统上轻松构建程序。

我在OS X 10.9.2上使用clang 3.4,boost 1.55.0,PCL 1.7.1和CUDA 5.5。

如果有人可以帮助我会很棒。

谢谢你的帮助


这是一个最小的例子:

//main.cpp

#include <pcl/filters/voxel_grid.h> // it works if this include is removed

int main(int argc, const char * argv[])
{
    return 0;
}

我使用的cmake文件:

#cmake file

cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(test)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

find_package(PCL 1.7 REQUIRED)
find_package(Boost 1.55 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS} ${BOOST_INCLUDE_DIRS})

add_executable(main main.cpp)
target_link_libraries(main ${PCL_LIBRARIES} ${BOOST_LIBRARIES})



解决方案/错误原因

我找到了问题的根本原因。我编译了一个示例,它在控制台上手动导致相同的问题,以便我可以比较Xcode和cmake使用的不同编译器标志/设置。

我发现,Xcode添加了一些cmake无法添加的标志。 Xcode添加的标志/选项之一是&#34; -fvisibility-inlines-hidden&#34;。使用该选项设置示例程序编译并运行正常,没有选项设置它编译但生成&#34;总线错误:10&#34;在运行时。

如果有人可以解释该选项的作用以及编译时必要的原因,那就太棒了。这只是铿锵声或OS X特定的,所以在不同的操作系统/编译器上不需要这个选项吗?

问候并感谢, Ruediger

0 个答案:

没有答案