在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下,应将其放在编译链接完成后得到的可执行文件所在的目录