pcl1.80源码编译目录
自己使用了pcl的程序在自己的电脑上运行正常,但是打包到其他的电脑上运行时报段错误(segmentationfault),然后使用gdb调试的时候,发现类似如下错误点:
无论你使用的是pcl的动态库(*.so)还是静态库(*.a),就很奇怪:
自行编译pcl的时候,cmake会自动检测机器能进行的优化,然后可能会给编译器加上-march=native的编译选项,进行SSE等适合本地机器的优化,能起到加速的作用。
指定了-march参数,gcc将不会再用兼容的指令去编译。
如果只是自己电脑用,没有什么问题,但是如果编译的库还要在其他的电脑上使用,如果其他的机器不具备这些优化的硬件,指令就执行不了,就会报Illegalinstruction的错误,呈现在上面就是段错误(segmentationfault)
之所以上面的错误在别的电脑上还能知道自己电脑上特定文件的位置呢,因为PCL编译的时候默认的编译类型是RelWithDebInfo,这样编译出来的库是有调试信息的,所以能指向特定文件位置。
编译PCL的时候,如果只有自己使用,开启也没有关系,还能加速。
如果是编译公共库或者程序要在其他的机器上运行,建议不要开启SSE优化。
关闭SSE优化后的PCL的库(无论是动态库还是静态库),其他程序依赖之后就不会产生上面的Nosuchfileordirectory的错误。
如果开启了。
cmake的时候,中间输出信息中会有UsingCPUnativeflagsforSSEoptimization:-march=native的输出,如下图所示
在PCL源码cmake文件夹下,有个pcl_options.cmake的文件
找到下面的内容。
默认第二个时ON,把它改成OFF即可
linux源码多为C语言,编译用GCC,调试为GDB,两个功能都及其强大,其它的编译器,调试器都只能望其项背了!!!
sourceinsight使得可以编译C语言程序配置方法:
要想编译c,需要配置PcLint。
1、假设sourceinsight的安装目录在d:/pclint8,那么pclin.exe就在这个目录,
所有的*.lnt文件在d:/pclint8/lnt目录下面:
打开菜单:options-
推荐您阅读更多有关于“ ”的文章
评论列表: