标签 ubuntu 下的文章

C++ | Linux下源码编译VTK6.1


背景

occ需要vtk依赖。

过程

  1. 添加cmake配置,c++标注指定11的版本

CMAKE_CXX_STANDARD 11

  1. 修改CMake文件,让其使用更高版本的gcc
    这边gcc版本为11.4的,所以3或4开头的需要修改11开头

CMake/GenerateExportHeader.cmake内的169行
CMake/vtkCompilerExtras.cmake内的30行
[34]修改成[0-9]+

  1. 修复error: ‘GLintptr’ has not been declared等报错
    /usr/include/GL/glxext.h文件先备份一下

sudo cp /usr/include/GL/glxext.h /usr/include/GL/glxext.h.bak

在此文件的474行添加下边两句话

typedef ptrdiff_t GLsizeiptr;
typedef ptrdiff_t GLintptr;
  1. 编译及安装make -j8 && make install

教程 | boost在ubuntu上编译安装


需求

中望这边给的包依赖boost,还是指定1.65.1版本的,但是最新的ubuntu确实安装的1.74,这就很尴尬,直接创建软连接的话还是会报错。那就只能自己编译一下指定版本。

boost下载地址

boost官网
boost指定版本下载定制

解压文件

tar -xvzf boost_1_65_1.tar.gz

bjam

boost库自带一套编译工具bjam,bjam本身也是跨平台的,也需要自行编译出来。解压我们下载的boost_1_65_1.zip文件,在目录下有bootstrap.sh和bootstrap.bat两个脚本文件,它们分别用来编译unix和windows下的bjam。

编译bjam

./bootstrap.sh

编译及安装boost

./b2 install --prefix="../boost1.65.1" --build-dir="build" --with-filesystem

解释: 这里试安装boost,安装目录为上级目录的boost1.65.1,编译目录为build,只编译安装filesyste这个组件

b2参数说明

参数说明
stage生成链接库(动态库或静态库)到statedir中。(不含头文件)
---stagedir=在stage生成模式下的输出目录,支持相对路径。
install生成链接库(动态库或静态库)到prefix/lib中,并将头文件放到prefix/include中
---prefix=在install生成模式下的输出目录。
---build-type=构建指定的预定义库。
complete构建所有可能的变体。
---build-dir=设置编译过程中间产物的存放路径。
---show-libraries显示需要构建和安装步骤的boost库列表,然后退出。
---layout=确定是否选择库名和头位置,以便在同一系统上可以使用多版本的boost或多个编译器。
versionedboost二进制文件的名称包括boost版本号、编译器的名称和版本以及编码的构建属性。
---help帮助文档
---with-编译哪些库,例如--with-wave --with-test,表示只编译wave和test库。
---without-排除哪些库,例如--without-wave --without-test,表示除了wave库和test库其它都编译。
-toolset=msvc-14.0/msvc-14.1/msvc-14.2/gcc指定编译器。b2.exe会自行检索当前系统下的编译器,如果该参数为缺省值,那么b2.exe将使用boost源码根目录下的project-config.jam文件中的第一个编译器。
variant=debug/release设置生成的库是调试版本还是发布版本。默认值为release debug即两者都编译。
link=static/shared设置生成的库是动态库还是静态库。默认值为satic。
threading=single/multi设置是否支持多线程(线程安全)。默认值为multi(多线程)。
runtime-link=static/shared设置运行时库的链接方式。默认shared(动态链接)。
address-model=32/64设置生成的库地址模式,是32位还是64位。默认两者都编译。
--project-config=project-config.jam加载指定项目配置文件。默认值为project-config.jam。