Ubuntu环境下LASlib库和PCL库的配置和使用

 在ubuntu环境下C++编程没有windows下VS之类的环境,需要自己建立或者说选择C++编译和链接的环境,http://conglang.github.io/2015/03/17/programming-in-ubuntu/  对ubuntu环境下的c++编程方法作了详细的介绍,gcc.makefile.cmake之间的关系也作了描述,也介绍编译编译链接时一些库的位置(记得编译链接时的静态库,动态库),可以选择性的了解。选择cmake编译C++程序,需了解cmake的基本用法,如何链接动态库和静态库,头文件等。

    ubuntu环境下使用第三方C++库,一般需要通过编译,它的主要作用是把相关的头文件和库放在系统会默认链接的地方,比如usr/include 和usr/lib,就不用cmakelists中特意去指定。同样的,也可以自定义头文件和链接的库(静动态)的位置,通过cmakelists 中include_directories ,link_directories 和 target_link_libraries 前者为头文件目录,后两者为库文件目录和指定库文件。

Libux环境下库的基本知识:

.o 就相当于windows里的obj文件 ,一个.c或.cpp文件对应一个.o文件

.a 是好多个.o合在一起,用于静态连接 ,即STATIC mode,多个.a可以链接生成一个exe的可执行文件(注意是,o,所以不要想着头文件)

.so 是shared object,用于动态连接的,和windows的dll差不多,使用时才载入。

 

 

PCL库

第一步,打开PCL官网linux 预安装教程 Prebuilt binaries for Linux. 按照他的说法把第一步完成。

sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl

sudo apt-get update

sudo apt-get install libpcl-all

第二步,打开 PCL Ubuntu documentation:Documentation 从 Experimental 开始按照它的步骤往下做。

git clone https://github.com/PointCloudLibrary/pcl pcl-trunk

cd pcl-trunk && mkdir build && cd build

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..

make -j2

sudo make -j2 install

 

 

LASlib

1,在https://github.com/LAStools/LAStools 下载,解压,命令行进入解压后文件夹所在目录

2,cd LASlib && make,cd LASzip && make,cd src && make这几行命令用来编译并得到LASlib.a,LASlib的静态库

 

使用LASlib和PCL(通过CMakeLists编译):

cmake_minimum_required(VERSION 2.8)

project(test1)

find_package(PCL 1.3 REQUIRED)

 

include_directories(${PCL_INCLUDE_DIRS} /home/srh/Downloads/LAStools/LASlib/inc /home/srh/Downloads/LAStools/LASzip/src)

#上面为LASlib对应头文件所在目录

link_directories(${PCL_LIBRARY_DIRS} /home/srh/Downloads/LAStools/LASlib/src/)

#上面为LASlib对应库文件所在目录

add_definitions(${PCL_DEFINITIONS})

 

add_executable(${PROJECT_NAME} "main.cpp")

 

target_link_libraries (${PROJECT_NAME} ${PCL_LIBRARIES}  liblas.a )

#指定编译好的liblas.a 静态库

可能错误:

lasreader.hpp: No such file or directory 缺少头文件

undefined reference to `LASreadOpener::LASreadOpener() 缺少库文件

can not  open “XXX.las” 文件的路径不对,不像在windows下,待处理文件放在在源文件所在目录,Linux下,应将其放在编译链接完成后得到的可执行文件所在的目录

猜你喜欢

转载自blog.csdn.net/u013313528/article/details/81781570
今日推荐