A non-inheritable class

C++ Final Class 设计

Introduction

It is a common question why we shouldn’t inherit classes from STL classes. The answer of this question is simple. Big three rule [CLI95]. In other words you should have virtual destructor in a class if you want to make it a base class. However there aren’t any class in STL which define virtual destructor. Even if you try to inherit a class from STL class the compiler doesn’t complain about it, but there is a high chance of resource leak in the program. It makes programmers life easy if the compiler catches as many errors as it can during compilation. So it is nice idea to make a class in such a way that you  can’t inherit class from it, in other words a Final class.

Background

One day during a  discussion with one of my friends, who is mostly working on java, we compared the object-oriented features of Java and C++. And he introduced me to one interesting concept of java called Final class, i.e. a class from which you cant inherit any further class. It was a totally new concept for me at that time and I liked it because most of the time I wish I could make a class in C++ from which others cant inherit. He asked me to do this in C++ and I start thinking about it and doing some experimentation. Before further discussion on how we can make it, it is useful to discuss why should we need it.

Why might we need a final class?

One possible scenario, which comes to my mind that would be useful for "Final class" is a class without virtual destructor. Suppose you are making a class, which doesn’t have virtual destructor, and it may contain some dynamically allocated object. Now if any one inherits a class from it and creates the object of derived class dynamically then it will clearly create resource leak although compiler will not complain about this.

class B {

. . .

};

 

class D : public B {

. . .

};

 

B* pB = new D;

delete pB; // resource leak

Details of implementing a final class

To make a class final the first solution, which may come in mind, is to make its constructor private. And make static functions to create the objects. But there is one problem in this approach that there may be more than one constructor in the class and you have to make all of them private. There is still a chance that anyone can make another public constructor. Quick fix of this problem is to make destructor private instead of constructor because there can be only one destructor in the class.

class FinalClass

{

private:

  ~FinalClass() { }

public:

  static FinalClass* CreateInstance()

  {

    return new FinalClass;

  }

. . .

};

The one problem with this approach is that creation of object is not possible on the stack; object must be created on heap. And now it is the responsibility of the user of this class to destroy this object. Again in this case there is a chance of resource leak if user of this class forgot to delete the object of this class from the heap when it is not needed.

Lets take a look at another approach of making a class final and still make it in such a way that a client of this class can create its object on stack and not just on the heap. We all know that when we make one class friend of other then it can create object of that class even its destructor is private. So we can create one temporary class and make its constructor private. And inherit one class from it and also make the derived class friend of it base, because if we didn’t do it then we can’t inherit the class from another class whose constructor or destructor is private.

class Temp

{

private:

 ~Temp() { };

  friend class FinalClass;

};

 

class FinalClass : public Temp

{

. . .

};

But when you inherit any class from FinalClass this works fine. Let’s suppose you inherit derived class from FinalClass. Now when you create the object of derived class, its constructor is called, which will call the constructor of FinalClass and FinalClass’s constructor calls the constructor of Temp because FinalClass is friend of Temp. So everything is normal and our final class is still inheritable in other words, it is not final as of now.

Before going into final class in more detail, let’s discuss the famous multiple inheritance problem, or the diamond problem. In that case you solve that problem by making virtual base class and inheriting intermediate classes virtually. But what is the purpose of virtual base class? In fact the object of most derived class (whose object is created) directly call the constructor of virtual base class. So we resolve the diamond problem, because now the most derived class (Bottom in case of diamond problem) directly calls the most base class (Top in diamond problem) constructor, and now there is only single copy of Top most class.

We can apply the same technique here. We inherit our FinalClass virtually from Temp class and make Temp as a virtual base class. Now whenever anyone attempts to inherit class from FinalClass and make object of it, then its constructor tries to call the constructor of Temp. But the constructor of Temp is private so compiler complains about this and it gives error during the compilation, because your derived class is not friend of Temp. Remember friendship is not inherited in the derived class. After all your parent's friends are not your friends and your friends are not friends of your children. But when you create object of FinalClass then its constructor can call the Temp’s constructor because FinalClass is friend of Temp. So here is final version of our final class, which can also be created on stack and not just in the heap.

class Temp

{

private:

  ~Temp() { };

  friend class FinalClass;

};

 

class FinalClass : virtual public Temp

{

. . .

};

But what is the case when you have to make more than one final class? You have to write double the classes i.e. if you need N final classes then you have to write 2N classes because in this method we have one temp class with private constructor and your final class. So you have to write lots of same code again and again. Why not try to take advantage of a template and try to make a class in such a way that if you inherit any class from that class your class will automatically become a Final class. The code of such a class is so simple.

template <typename T>

class MakeFinal

{

private:

  ~MakeFinal() { };

  friend T;

};

Don’t forget to virtually inherit your final class from this class to make sure this class becomes virtual base class. And pass your final class name as a template parameter so your class becomes friend of this and can call the constructor of this class.

class FinalClass : virtual public MakeFinal<FinalClass>

{

};

Conclusion

Of course nothing comes without cost. You have to pay the extra bytes to store the information about virtual base class. Most of the compiler implementations uses a pointer to store the information about the virtual base class in case of virtual inheritance. Therefore the size of the object is not just the sum of all the member variable storage allocation but it is greater than you expect. Remember that this pointer i.e. pointer to virtual base class is different than the virtual pointer, which is introduced in case of virtual function [LIP96]. This is totally an implementation issue; C++ standard doesn’t say anything about the mechanism of calling virtual function, virtual pointer and virtual table [ISO98].

Adding only one small class and changing few lines of code makes your program more reliable and reduces the resource leak problems, which could be created if you didn't use  a final class.  

安装了dosygen开发包,还是这样报错 abc@abc-virtual-machine:~/catkin_ws$ sudo apt-get install doxygen doxygen-doc doxygen-latex doxygen-gui [sudo] abc 的密码: 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 doxygen 已经是最新版 (1.8.17-0ubuntu2)。 下列软件包是自动安装的并且现在不需要了: gir1.2-goa-1.0 libfprint-2-tod1 libfwupdplugin1 libllvm9 libxmlb1 usb-modeswitch usb-modeswitch-data 使用'sudo apt autoremove'来卸载它(它们)。 将会同时安装下列软件: cm-super-minimal dvisvgm fonts-lmodern fonts-texgyre libalgorithm-c3-perl libapache-pom-java libb-hooks-endofscope-perl libb-hooks-op-check-perl libclass-c3-perl libclass-c3-xs-perl libclass-data-inheritable-perl libclass-method-modifiers-perl libclass-xsaccessor-perl libcommons-logging-java libcommons-parent-java libdata-optlist-perl libdevel-callchecker-perl libdevel-caller-perl libdevel-globaldestruction-perl libdevel-lexalias-perl libdevel-stacktrace-perl libdist-checkconflicts-perl libdynaloader-functions-perl libemail-date-format-perl libeval-closure-perl libexception-class-perl libfile-homedir-perl libfile-which-perl libfontbox-java libipc-shareable-perl liblog-dispatch-perl liblog-log4perl-perl libmime-lite-perl libmime-types-perl libmodule-implementation-perl libmodule-runtime-perl libmro-compat-perl libnamespace-autoclean-perl libnamespace-clean-perl libpackage-stash-perl libpackage-stash-xs-perl libpadwalker-perl libparams-classify-perl libparams-util-perl libparams-validationcompiler-perl libpdfbox-java libptexenc1 libreadonly-perl libref-util-perl libref-util-xs-perl librole-tiny-perl libspecio-perl libsub-exporter-perl libsub-exporter-progressive-perl libsub-identify-perl libsub-install-perl libsub-quote-perl libteckit0 libtexlua53 libtexluajit2 libvariable-magic-perl libxstring-perl libyaml-tiny-perl lmodern preview-latex-style ps2eps t1utils tex-gyre texlive-base texlive-binaries texlive-extra-utils texlive-font-utils texlive-fonts-recommended texlive-latex-base texlive-latex-extra texlive-latex-recommended texlive-pictures texlive-plain-generic tipa 建议安装: libavalon-framework-java libcommons-logging-java-doc libexcalibur-logkit-java liblog4j1.2-java libdbd-csv-perl liblog-dispatch-filerotate-perl librrds-perl libxml-dom-perl default-mta | mail-transport-agent libmojolicious-perl libscalar-number-perl libtest-fatal-perl perl-tk xzdec chktex dvidvi dvipng fragmaster lacheck latexdiff latexmk purifyeps xindy lcdf-typetools psutils texlive-fonts-recommended-doc texlive-latex-base-doc icc-profiles libspreadsheet-parseexcel-perl texlive-latex-extra-doc texlive-latex-recommended-doc texlive-luatex texlive-pstricks dot2tex prerex ruby-tcltk | libtcltk-ruby texlive-pictures-doc vprerex default-jre-headless 下列【新】软件包将被安装: cm-super-minimal doxygen-doc doxygen-gui doxygen-latex dvisvgm fonts-lmodern fonts-texgyre libalgorithm-c3-perl libapache-pom-java libb-hooks-endofscope-perl libb-hooks-op-check-perl libclass-c3-perl libclass-c3-xs-perl libclass-data-inheritable-perl libclass-method-modifiers-perl libclass-xsaccessor-perl libcommons-logging-java libcommons-parent-java libdata-optlist-perl libdevel-callchecker-perl libdevel-caller-perl libdevel-globaldestruction-perl libdevel-lexalias-perl libdevel-stacktrace-perl libdist-checkconflicts-perl libdynaloader-functions-perl libemail-date-format-perl libeval-closure-perl libexception-class-perl libfile-homedir-perl libfile-which-perl libfontbox-java libipc-shareable-perl liblog-dispatch-perl liblog-log4perl-perl libmime-lite-perl libmime-types-perl libmodule-implementation-perl libmodule-runtime-perl libmro-compat-perl libnamespace-autoclean-perl libnamespace-clean-perl libpackage-stash-perl libpackage-stash-xs-perl libpadwalker-perl libparams-classify-perl libparams-util-perl libparams-validationcompiler-perl libpdfbox-java libptexenc1 libreadonly-perl libref-util-perl libref-util-xs-perl librole-tiny-perl libspecio-perl libsub-exporter-perl libsub-exporter-progressive-perl libsub-identify-perl libsub-install-perl libsub-quote-perl libteckit0 libtexlua53 libtexluajit2 libvariable-magic-perl libxstring-perl libyaml-tiny-perl lmodern preview-latex-style ps2eps t1utils tex-gyre texlive-base texlive-binaries texlive-extra-utils texlive-font-utils texlive-fonts-recommended texlive-latex-base texlive-latex-extra texlive-latex-recommended texlive-pictures texlive-plain-generic tipa 升级了 0 个软件包,新安装了 82 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。 需要下载 188 MB 的归档。 解压缩后会消耗 508 MB 的额外空间。 您希望继续执行吗? [Y/n] y 获取:1 https://mirrors.ustc.edu.cn/ubuntu focal-updates/main amd64 libptexenc1 amd64 2019.20190605.51237-3ubuntu0.2 [35.5 kB] 获取:2 https://mirrors.ustc.edu.cn/ubuntu focal-updates/main amd64 libtexlua53 amd64 2019.20190605.51237-3ubuntu0.2 [105 kB] 获取:3 https://mirrors.ustc.edu.cn/ubuntu focal-updates/main amd64 libtexluajit2 amd64 2019.20190605.51237-3ubuntu0.2 [235 kB] 获取:4 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 t1utils amd64 1.41-3 [56.1 kB] 获取:5 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libteckit0 amd64 2.5.8+ds2-5ubuntu2 [320 kB] 获取:6 https://mirrors.ustc.edu.cn/ubuntu focal-updates/universe amd64 texlive-binaries amd64 2019.20190605.51237-3ubuntu0.2 [8,038 kB] 获取:7 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 texlive-base all 2019.20200218-1 [20.8 MB] 获取:8 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 fonts-lmodern all 2.004.5-6 [4,532 kB] 获取:9 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 texlive-latex-base all 2019.20200218-1 [990 kB] 获取:10 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 texlive-latex-recommended all 2019.20200218-1 [15.7 MB] 获取:11 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 cm-super-minimal all 0.3.4-15 [5,811 kB] 获取:12 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 doxygen-doc all 1.8.17-0ubuntu2 [2,289 kB] 获取:13 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 doxygen-gui amd64 1.8.17-0ubuntu2 [249 kB] 获取:14 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 texlive-extra-utils all 2019.202000218-1 [43.6 MB] 获取:15 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libapache-pom-java all 18-1 [4,720 B] 获取:16 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libcommons-parent-java all 43-1 [10.8 kB] 获取:17 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libcommons-logging-java all 1.2-2 [60.3 kB] 获取:18 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libfontbox-java all 1:1.8.16-2 [207 kB] 获取:19 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libpdfbox-java all 1:1.8.16-2 [5,199 kB] 获取:20 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 preview-latex-style all 11.91-2ubuntu2 [184 kB] 获取:21 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 texlive-pictures all 2019.20200218-1 [4,492 kB] 获取:22 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 texlive-latex-extra all 2019.202000218-1 [12.5 MB] 获取:23 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 texlive-plain-generic all 2019.202000218-1 [24.6 MB] 获取:24 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 texlive-font-utils all 2019.202000218-1 [1,742 kB] 获取:25 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 texlive-fonts-recommended all 2019.20200218-1 [4,972 kB] 获取:26 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 doxygen-latex all 1.8.17-0ubuntu2 [5,196 B] 获取:27 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 dvisvgm amd64 2.8.1-1build1 [1,048 kB] 获取:28 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 fonts-texgyre all 20180621-3 [10.2 MB] 获取:29 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libalgorithm-c3-perl all 0.10-1 [11.3 kB] 获取:30 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libb-hooks-op-check-perl amd64 0.22-1build2 [10.2 kB] 获取:31 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libdynaloader-functions-perl all 0.003-1 [11.9 kB] 获取:32 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libdevel-callchecker-perl amd64 0.008-1ubuntu1 [14.5 kB] 获取:33 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libparams-classify-perl amd64 0.015-1build2 [21.1 kB] 获取:34 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libmodule-runtime-perl all 0.016-1 [16.2 kB] 获取:35 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libmodule-implementation-perl all 0.09-1 [12.2 kB] 获取:36 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libsub-exporter-progressive-perl all 0.001013-1 [6,784 B] 获取:37 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libvariable-magic-perl amd64 0.62-1build2 [34.4 kB] 获取:38 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libb-hooks-endofscope-perl all 0.24-1 [16.8 kB] 获取:39 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libclass-c3-perl all 0.34-1 [18.9 kB] 获取:40 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libclass-c3-xs-perl amd64 0.14-1build5 [15.5 kB] 获取:41 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libclass-data-inheritable-perl all 0.08-3 [8,084 B] 获取:42 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libclass-method-modifiers-perl all 2.13-1 [16.2 kB] 获取:43 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libclass-xsaccessor-perl amd64 1.19-3build3 [33.6 kB] 获取:44 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libparams-util-perl amd64 1.07-3build5 [19.7 kB] 获取:45 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libsub-install-perl all 0.928-1 [10.5 kB] 获取:46 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libdata-optlist-perl all 0.110-1 [9,956 B] 获取:47 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libpadwalker-perl amd64 2.3-1build2 [15.2 kB] 获取:48 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libdevel-caller-perl amd64 2.06-2build2 [10.6 kB] 获取:49 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libdevel-globaldestruction-perl all 0.14-1 [6,752 B] 获取:50 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libdevel-lexalias-perl amd64 0.05-2build2 [8,788 B] 获取:51 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libdevel-stacktrace-perl all 2.0400-1 [22.7 kB] 获取:52 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libdist-checkconflicts-perl all 0.11-1 [10.2 kB] 获取:53 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libemail-date-format-perl all 1.005-1 [6,622 B] 获取:54 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libsub-exporter-perl all 0.987-1 [44.9 kB] 获取:55 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libeval-closure-perl all 0.14-1 [10.3 kB] 获取:56 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libexception-class-perl all 1.44-1 [25.9 kB] 获取:57 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libfile-which-perl all 1.23-1 [13.8 kB] 获取:58 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libfile-homedir-perl all 1.004-1 [37.3 kB] 获取:59 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libipc-shareable-perl all 0.61-2 [29.5 kB] 获取:60 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libpackage-stash-perl all 0.38-1 [19.1 kB] 获取:61 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libsub-identify-perl amd64 0.14-1build2 [10.7 kB] 获取:62 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libnamespace-clean-perl all 0.27-1 [13.6 kB] 获取:63 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libnamespace-autoclean-perl all 0.29-1 [12.5 kB] 获取:64 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libparams-validationcompiler-perl all 0.30-1 [28.9 kB] 获取:65 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libmro-compat-perl all 0.13-1 [11.2 kB] 获取:66 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 librole-tiny-perl all 2.001004-1 [16.5 kB] 获取:67 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libsub-quote-perl all 2.006006-1 [19.5 kB] 获取:68 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libxstring-perl amd64 0.002-2 [7,276 B] 获取:69 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libspecio-perl all 0.45-1 [138 kB] 获取:70 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 liblog-dispatch-perl all 2.69-1 [67.0 kB] 获取:71 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 liblog-log4perl-perl all 1.49-1 [344 kB] 获取:72 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libmime-lite-perl all 3.031-1 [62.9 kB] 获取:73 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libmime-types-perl all 2.17-1 [57.6 kB] 获取:74 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libpackage-stash-xs-perl amd64 0.29-1build1 [18.4 kB] 获取:75 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libreadonly-perl all 2.050-2 [19.9 kB] 获取:76 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libref-util-perl all 0.204-1 [15.0 kB] 获取:77 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libref-util-xs-perl amd64 0.117-1build2 [12.0 kB] 获取:78 https://mirrors.ustc.edu.cn/ubuntu focal/main amd64 libyaml-tiny-perl all 1.73-1 [25.2 kB] 获取:79 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 lmodern all 2.004.5-6 [9,474 kB] 获取:80 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 ps2eps amd64 1.68+binaryfree-2 [33.2 kB] 获取:81 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 tex-gyre all 20180621-3 [6,209 kB] 获取:82 https://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 tipa all 2:1.3-20 [2,978 kB] 已下载 188 MB,耗时 1分 13秒 (2,581 kB/s) 正在从软件包中解出模板:100% 正在预设定软件包 ... 正在选中未选择的软件包 libptexenc1:amd64。 (正在读取数据库 ... 系统当前共安装有 293207 个文件和目录。) 准备解压 .../00-libptexenc1_2019.20190605.51237-3ubuntu0.2_amd64.deb ... 正在解压 libptexenc1:amd64 (2019.20190605.51237-3ubuntu0.2) ... 正在选中未选择的软件包 libtexlua53:amd64。 准备解压 .../01-libtexlua53_2019.20190605.51237-3ubuntu0.2_amd64.deb ... 正在解压 libtexlua53:amd64 (2019.20190605.51237-3ubuntu0.2) ... 正在选中未选择的软件包 libtexluajit2:amd64。 准备解压 .../02-libtexluajit2_2019.20190605.51237-3ubuntu0.2_amd64.deb ... 正在解压 libtexluajit2:amd64 (2019.20190605.51237-3ubuntu0.2) ... 正在选中未选择的软件包 t1utils。 准备解压 .../03-t1utils_1.41-3_amd64.deb ... 正在解压 t1utils (1.41-3) ... 正在选中未选择的软件包 libteckit0:amd64。 准备解压 .../04-libteckit0_2.5.8+ds2-5ubuntu2_amd64.deb ... 正在解压 libteckit0:amd64 (2.5.8+ds2-5ubuntu2) ... 正在选中未选择的软件包 texlive-binaries。 准备解压 .../05-texlive-binaries_2019.20190605.51237-3ubuntu0.2_amd64.deb ... 正在解压 texlive-binaries (2019.20190605.51237-3ubuntu0.2) ... 正在选中未选择的软件包 texlive-base。 准备解压 .../06-texlive-base_2019.20200218-1_all.deb ... 正在解压 texlive-base (2019.20200218-1) ... 正在选中未选择的软件包 fonts-lmodern。 准备解压 .../07-fonts-lmodern_2.004.5-6_all.deb ... 正在解压 fonts-lmodern (2.004.5-6) ... 正在选中未选择的软件包 texlive-latex-base。 准备解压 .../08-texlive-latex-base_2019.20200218-1_all.deb ... 正在解压 texlive-latex-base (2019.20200218-1) ... 正在选中未选择的软件包 texlive-latex-recommended。 准备解压 .../09-texlive-latex-recommended_2019.20200218-1_all.deb ... 正在解压 texlive-latex-recommended (2019.20200218-1) ... 正在选中未选择的软件包 cm-super-minimal。 准备解压 .../10-cm-super-minimal_0.3.4-15_all.deb ... 正在解压 cm-super-minimal (0.3.4-15) ... 正在选中未选择的软件包 doxygen-doc。 准备解压 .../11-doxygen-doc_1.8.17-0ubuntu2_all.deb ... 正在解压 doxygen-doc (1.8.17-0ubuntu2) ... 正在选中未选择的软件包 doxygen-gui。 准备解压 .../12-doxygen-gui_1.8.17-0ubuntu2_amd64.deb ... 正在解压 doxygen-gui (1.8.17-0ubuntu2) ... 正在选中未选择的软件包 texlive-extra-utils。 准备解压 .../13-texlive-extra-utils_2019.202000218-1_all.deb ... 正在解压 texlive-extra-utils (2019.202000218-1) ... 正在选中未选择的软件包 libapache-pom-java。 准备解压 .../14-libapache-pom-java_18-1_all.deb ... 正在解压 libapache-pom-java (18-1) ... 正在选中未选择的软件包 libcommons-parent-java。 准备解压 .../15-libcommons-parent-java_43-1_all.deb ... 正在解压 libcommons-parent-java (43-1) ... 正在选中未选择的软件包 libcommons-logging-java。 准备解压 .../16-libcommons-logging-java_1.2-2_all.deb ... 正在解压 libcommons-logging-java (1.2-2) ... 正在选中未选择的软件包 libfontbox-java。 准备解压 .../17-libfontbox-java_1%3a1.8.16-2_all.deb ... 正在解压 libfontbox-java (1:1.8.16-2) ... 正在选中未选择的软件包 libpdfbox-java。 准备解压 .../18-libpdfbox-java_1%3a1.8.16-2_all.deb ... 正在解压 libpdfbox-java (1:1.8.16-2) ... 正在选中未选择的软件包 preview-latex-style。 准备解压 .../19-preview-latex-style_11.91-2ubuntu2_all.deb ... 正在解压 preview-latex-style (11.91-2ubuntu2) ... 正在选中未选择的软件包 texlive-pictures。 准备解压 .../20-texlive-pictures_2019.20200218-1_all.deb ... 正在解压 texlive-pictures (2019.20200218-1) ... 正在选中未选择的软件包 texlive-latex-extra。 准备解压 .../21-texlive-latex-extra_2019.202000218-1_all.deb ... 正在解压 texlive-latex-extra (2019.202000218-1) ... 正在选中未选择的软件包 texlive-plain-generic。 准备解压 .../22-texlive-plain-generic_2019.202000218-1_all.deb ... 正在解压 texlive-plain-generic (2019.202000218-1) ... 正在选中未选择的软件包 texlive-font-utils。 准备解压 .../23-texlive-font-utils_2019.202000218-1_all.deb ... 正在解压 texlive-font-utils (2019.202000218-1) ... 正在选中未选择的软件包 texlive-fonts-recommended。 准备解压 .../24-texlive-fonts-recommended_2019.20200218-1_all.deb ... 正在解压 texlive-fonts-recommended (2019.20200218-1) ... 正在选中未选择的软件包 doxygen-latex。 准备解压 .../25-doxygen-latex_1.8.17-0ubuntu2_all.deb ... 正在解压 doxygen-latex (1.8.17-0ubuntu2) ... 正在选中未选择的软件包 dvisvgm。 准备解压 .../26-dvisvgm_2.8.1-1build1_amd64.deb ... 正在解压 dvisvgm (2.8.1-1build1) ... 正在选中未选择的软件包 fonts-texgyre。 准备解压 .../27-fonts-texgyre_20180621-3_all.deb ... 正在解压 fonts-texgyre (20180621-3) ... 正在选中未选择的软件包 libalgorithm-c3-perl。 准备解压 .../28-libalgorithm-c3-perl_0.10-1_all.deb ... 正在解压 libalgorithm-c3-perl (0.10-1) ... 正在选中未选择的软件包 libb-hooks-op-check-perl。 准备解压 .../29-libb-hooks-op-check-perl_0.22-1build2_amd64.deb ... 正在解压 libb-hooks-op-check-perl (0.22-1build2) ... 正在选中未选择的软件包 libdynaloader-functions-perl。 准备解压 .../30-libdynaloader-functions-perl_0.003-1_all.deb ... 正在解压 libdynaloader-functions-perl (0.003-1) ... 正在选中未选择的软件包 libdevel-callchecker-perl。 准备解压 .../31-libdevel-callchecker-perl_0.008-1ubuntu1_amd64.deb ... 正在解压 libdevel-callchecker-perl (0.008-1ubuntu1) ... 正在选中未选择的软件包 libparams-classify-perl。 准备解压 .../32-libparams-classify-perl_0.015-1build2_amd64.deb ... 正在解压 libparams-classify-perl (0.015-1build2) ... 正在选中未选择的软件包 libmodule-runtime-perl。 准备解压 .../33-libmodule-runtime-perl_0.016-1_all.deb ... 正在解压 libmodule-runtime-perl (0.016-1) ... 正在选中未选择的软件包 libmodule-implementation-perl。 准备解压 .../34-libmodule-implementation-perl_0.09-1_all.deb ... 正在解压 libmodule-implementation-perl (0.09-1) ... 正在选中未选择的软件包 libsub-exporter-progressive-perl。 准备解压 .../35-libsub-exporter-progressive-perl_0.001013-1_all.deb ... 正在解压 libsub-exporter-progressive-perl (0.001013-1) ... 正在选中未选择的软件包 libvariable-magic-perl。 准备解压 .../36-libvariable-magic-perl_0.62-1build2_amd64.deb ... 正在解压 libvariable-magic-perl (0.62-1build2) ... 正在选中未选择的软件包 libb-hooks-endofscope-perl。 准备解压 .../37-libb-hooks-endofscope-perl_0.24-1_all.deb ... 正在解压 libb-hooks-endofscope-perl (0.24-1) ... 正在选中未选择的软件包 libclass-c3-perl。 准备解压 .../38-libclass-c3-perl_0.34-1_all.deb ... 正在解压 libclass-c3-perl (0.34-1) ... 正在选中未选择的软件包 libclass-c3-xs-perl。 准备解压 .../39-libclass-c3-xs-perl_0.14-1build5_amd64.deb ... 正在解压 libclass-c3-xs-perl (0.14-1build5) ... 正在选中未选择的软件包 libclass-data-inheritable-perl。 准备解压 .../40-libclass-data-inheritable-perl_0.08-3_all.deb ... 正在解压 libclass-data-inheritable-perl (0.08-3) ... 正在选中未选择的软件包 libclass-method-modifiers-perl。 准备解压 .../41-libclass-method-modifiers-perl_2.13-1_all.deb ... 正在解压 libclass-method-modifiers-perl (2.13-1) ... 正在选中未选择的软件包 libclass-xsaccessor-perl。 准备解压 .../42-libclass-xsaccessor-perl_1.19-3build3_amd64.deb ... 正在解压 libclass-xsaccessor-perl (1.19-3build3) ... 正在选中未选择的软件包 libparams-util-perl。 准备解压 .../43-libparams-util-perl_1.07-3build5_amd64.deb ... 正在解压 libparams-util-perl (1.07-3build5) ... 正在选中未选择的软件包 libsub-install-perl。 准备解压 .../44-libsub-install-perl_0.928-1_all.deb ... 正在解压 libsub-install-perl (0.928-1) ... 正在选中未选择的软件包 libdata-optlist-perl。 准备解压 .../45-libdata-optlist-perl_0.110-1_all.deb ... 正在解压 libdata-optlist-perl (0.110-1) ... 正在选中未选择的软件包 libpadwalker-perl。 准备解压 .../46-libpadwalker-perl_2.3-1build2_amd64.deb ... 正在解压 libpadwalker-perl (2.3-1build2) ... 正在选中未选择的软件包 libdevel-caller-perl。 准备解压 .../47-libdevel-caller-perl_2.06-2build2_amd64.deb ... 正在解压 libdevel-caller-perl (2.06-2build2) ... 正在选中未选择的软件包 libdevel-globaldestruction-perl。 准备解压 .../48-libdevel-globaldestruction-perl_0.14-1_all.deb ... 正在解压 libdevel-globaldestruction-perl (0.14-1) ... 正在选中未选择的软件包 libdevel-lexalias-perl。 准备解压 .../49-libdevel-lexalias-perl_0.05-2build2_amd64.deb ... 正在解压 libdevel-lexalias-perl (0.05-2build2) ... 正在选中未选择的软件包 libdevel-stacktrace-perl。 准备解压 .../50-libdevel-stacktrace-perl_2.0400-1_all.deb ... 正在解压 libdevel-stacktrace-perl (2.0400-1) ... 正在选中未选择的软件包 libdist-checkconflicts-perl。 准备解压 .../51-libdist-checkconflicts-perl_0.11-1_all.deb ... 正在解压 libdist-checkconflicts-perl (0.11-1) ... 正在选中未选择的软件包 libemail-date-format-perl。 准备解压 .../52-libemail-date-format-perl_1.005-1_all.deb ... 正在解压 libemail-date-format-perl (1.005-1) ... 正在选中未选择的软件包 libsub-exporter-perl。 准备解压 .../53-libsub-exporter-perl_0.987-1_all.deb ... 正在解压 libsub-exporter-perl (0.987-1) ... 正在选中未选择的软件包 libeval-closure-perl。 准备解压 .../54-libeval-closure-perl_0.14-1_all.deb ... 正在解压 libeval-closure-perl (0.14-1) ... 正在选中未选择的软件包 libexception-class-perl。 准备解压 .../55-libexception-class-perl_1.44-1_all.deb ... 正在解压 libexception-class-perl (1.44-1) ... 正在选中未选择的软件包 libfile-which-perl。 准备解压 .../56-libfile-which-perl_1.23-1_all.deb ... 正在解压 libfile-which-perl (1.23-1) ... 正在选中未选择的软件包 libfile-homedir-perl。 准备解压 .../57-libfile-homedir-perl_1.004-1_all.deb ... 正在解压 libfile-homedir-perl (1.004-1) ... 正在选中未选择的软件包 libipc-shareable-perl。 准备解压 .../58-libipc-shareable-perl_0.61-2_all.deb ... 正在解压 libipc-shareable-perl (0.61-2) ... 正在选中未选择的软件包 libpackage-stash-perl。 准备解压 .../59-libpackage-stash-perl_0.38-1_all.deb ... 正在解压 libpackage-stash-perl (0.38-1) ... 正在选中未选择的软件包 libsub-identify-perl。 准备解压 .../60-libsub-identify-perl_0.14-1build2_amd64.deb ... 正在解压 libsub-identify-perl (0.14-1build2) ... 正在选中未选择的软件包 libnamespace-clean-perl。 准备解压 .../61-libnamespace-clean-perl_0.27-1_all.deb ... 正在解压 libnamespace-clean-perl (0.27-1) ... 正在选中未选择的软件包 libnamespace-autoclean-perl。 准备解压 .../62-libnamespace-autoclean-perl_0.29-1_all.deb ... 正在解压 libnamespace-autoclean-perl (0.29-1) ... 正在选中未选择的软件包 libparams-validationcompiler-perl。 准备解压 .../63-libparams-validationcompiler-perl_0.30-1_all.deb ... 正在解压 libparams-validationcompiler-perl (0.30-1) ... 正在选中未选择的软件包 libmro-compat-perl。 准备解压 .../64-libmro-compat-perl_0.13-1_all.deb ... 正在解压 libmro-compat-perl (0.13-1) ... 正在选中未选择的软件包 librole-tiny-perl。 准备解压 .../65-librole-tiny-perl_2.001004-1_all.deb ... 正在解压 librole-tiny-perl (2.001004-1) ... 正在选中未选择的软件包 libsub-quote-perl。 准备解压 .../66-libsub-quote-perl_2.006006-1_all.deb ... 正在解压 libsub-quote-perl (2.006006-1) ... 正在选中未选择的软件包 libxstring-perl。 准备解压 .../67-libxstring-perl_0.002-2_amd64.deb ... 正在解压 libxstring-perl (0.002-2) ... 正在选中未选择的软件包 libspecio-perl。 准备解压 .../68-libspecio-perl_0.45-1_all.deb ... 正在解压 libspecio-perl (0.45-1) ... 正在选中未选择的软件包 liblog-dispatch-perl。 准备解压 .../69-liblog-dispatch-perl_2.69-1_all.deb ... 正在解压 liblog-dispatch-perl (2.69-1) ... 正在选中未选择的软件包 liblog-log4perl-perl。 准备解压 .../70-liblog-log4perl-perl_1.49-1_all.deb ... 正在解压 liblog-log4perl-perl (1.49-1) ... 正在选中未选择的软件包 libmime-lite-perl。 准备解压 .../71-libmime-lite-perl_3.031-1_all.deb ... 正在解压 libmime-lite-perl (3.031-1) ... 正在选中未选择的软件包 libmime-types-perl。 准备解压 .../72-libmime-types-perl_2.17-1_all.deb ... 正在解压 libmime-types-perl (2.17-1) ... 正在选中未选择的软件包 libpackage-stash-xs-perl。 准备解压 .../73-libpackage-stash-xs-perl_0.29-1build1_amd64.deb ... 正在解压 libpackage-stash-xs-perl (0.29-1build1) ... 正在选中未选择的软件包 libreadonly-perl。 准备解压 .../74-libreadonly-perl_2.050-2_all.deb ... 正在解压 libreadonly-perl (2.050-2) ... 正在选中未选择的软件包 libref-util-perl。 准备解压 .../75-libref-util-perl_0.204-1_all.deb ... 正在解压 libref-util-perl (0.204-1) ... 正在选中未选择的软件包 libref-util-xs-perl。 准备解压 .../76-libref-util-xs-perl_0.117-1build2_amd64.deb ... 正在解压 libref-util-xs-perl (0.117-1build2) ... 正在选中未选择的软件包 libyaml-tiny-perl。 准备解压 .../77-libyaml-tiny-perl_1.73-1_all.deb ... 正在解压 libyaml-tiny-perl (1.73-1) ... 正在选中未选择的软件包 lmodern。 准备解压 .../78-lmodern_2.004.5-6_all.deb ... 正在解压 lmodern (2.004.5-6) ... 正在选中未选择的软件包 ps2eps。 准备解压 .../79-ps2eps_1.68+binaryfree-2_amd64.deb ... 正在解压 ps2eps (1.68+binaryfree-2) ... 正在选中未选择的软件包 tex-gyre。 准备解压 .../80-tex-gyre_20180621-3_all.deb ... 正在解压 tex-gyre (20180621-3) ... 正在选中未选择的软件包 tipa。 准备解压 .../81-tipa_2%3a1.3-20_all.deb ... 正在解压 tipa (2:1.3-20) ... 正在设置 libfile-which-perl (1.23-1) ... 正在设置 libdynaloader-functions-perl (0.003-1) ... 正在设置 libclass-method-modifiers-perl (2.13-1) ... 正在设置 libref-util-xs-perl (0.117-1build2) ... 正在设置 libmime-types-perl (2.17-1) ... 正在设置 libtexlua53:amd64 (2019.20190605.51237-3ubuntu0.2) ... 正在设置 libsub-identify-perl (0.14-1build2) ... 正在设置 preview-latex-style (11.91-2ubuntu2) ... 正在设置 libtexluajit2:amd64 (2019.20190605.51237-3ubuntu0.2) ... 正在设置 libfontbox-java (1:1.8.16-2) ... 正在设置 dvisvgm (2.8.1-1build1) ... 正在设置 libpadwalker-perl (2.3-1build2) ... 正在设置 libipc-shareable-perl (0.61-2) ... 正在设置 libxstring-perl (0.002-2) ... 正在设置 libyaml-tiny-perl (1.73-1) ... 正在设置 libclass-c3-xs-perl (0.14-1build5) ... 正在设置 libdevel-caller-perl (2.06-2build2) ... 正在设置 libsub-install-perl (0.928-1) ... 正在设置 libreadonly-perl (2.050-2) ... 正在设置 libdevel-lexalias-perl (0.05-2build2) ... 正在设置 libpackage-stash-xs-perl (0.29-1build1) ... 正在设置 libclass-data-inheritable-perl (0.08-3) ... 正在设置 libalgorithm-c3-perl (0.10-1) ... 正在设置 libptexenc1:amd64 (2019.20190605.51237-3ubuntu0.2) ... 正在设置 liblog-log4perl-perl (1.49-1) ... 正在设置 libref-util-perl (0.204-1) ... 正在设置 libteckit0:amd64 (2.5.8+ds2-5ubuntu2) ... 正在设置 libapache-pom-java (18-1) ... 正在设置 t1utils (1.41-3) ... 正在设置 ps2eps (1.68+binaryfree-2) ... 正在设置 libemail-date-format-perl (1.005-1) ... 正在设置 libvariable-magic-perl (0.62-1build2) ... 正在设置 libb-hooks-op-check-perl (0.22-1build2) ... 正在设置 fonts-texgyre (20180621-3) ... 正在设置 libparams-util-perl (1.07-3build5) ... 正在设置 libsub-exporter-progressive-perl (0.001013-1) ... 正在设置 texlive-binaries (2019.20190605.51237-3ubuntu0.2) ... update-alternatives: 使用 /usr/bin/xdvi-xaw 来在自动模式中提供 /usr/bin/xdvi.bin (xdvi.bin) update-alternatives: 使用 /usr/bin/bibtex.original 来在自动模式中提供 /usr/bin/bibtex (bibtex) 正在设置 librole-tiny-perl (2.001004-1) ... 正在设置 fonts-lmodern (2.004.5-6) ... 正在设置 libdevel-globaldestruction-perl (0.14-1) ... 正在设置 libsub-quote-perl (2.006006-1) ... 正在设置 libdevel-stacktrace-perl (2.0400-1) ... 正在设置 libclass-xsaccessor-perl (1.19-3build3) ... 正在设置 doxygen-gui (1.8.17-0ubuntu2) ... 正在设置 libfile-homedir-perl (1.004-1) ... 正在设置 doxygen-doc (1.8.17-0ubuntu2) ... 正在设置 texlive-base (2019.20200218-1) ... mktexlsr: Updating /var/lib/texmf/ls-R-TEXLIVEDIST... mktexlsr: Updating /var/lib/texmf/ls-R-TEXMFMAIN... mktexlsr: Updating /var/lib/texmf/ls-R... mktexlsr: Done. tl-paper: setting paper size for dvips to a4: /var/lib/texmf/dvips/config/config-paper.ps tl-paper: setting paper size for dvipdfmx to a4: /var/lib/texmf/dvipdfmx/dvipdfmx-paper.cfg tl-paper: setting paper size for xdvi to a4: /var/lib/texmf/xdvi/XDvi-paper tl-paper: setting paper size for pdftex to a4: /var/lib/texmf/tex/generic/config/pdftexconfig.tex 正在设置 tex-gyre (20180621-3) ... 正在设置 libpdfbox-java (1:1.8.16-2) ... 正在设置 libmime-lite-perl (3.031-1) ... 正在设置 libcommons-parent-java (43-1) ... 正在设置 texlive-plain-generic (2019.202000218-1) ... 正在设置 libcommons-logging-java (1.2-2) ... 正在设置 libexception-class-perl (1.44-1) ... 正在设置 libclass-c3-perl (0.34-1) ... 正在设置 texlive-font-utils (2019.202000218-1) ... 正在设置 libdevel-callchecker-perl (0.008-1ubuntu1) ... 正在设置 texlive-latex-base (2019.20200218-1) ... 正在设置 texlive-extra-utils (2019.202000218-1) ... 正在设置 texlive-latex-recommended (2019.20200218-1) ... 正在设置 libdata-optlist-perl (0.110-1) ... 正在设置 texlive-pictures (2019.20200218-1) ... 正在设置 lmodern (2.004.5-6) ... 正在设置 texlive-fonts-recommended (2019.20200218-1) ... 正在设置 tipa (2:1.3-20) ... Regenerating '/var/lib/texmf/fmtutil.cnf-DEBIAN'... done. Regenerating '/var/lib/texmf/fmtutil.cnf-TEXLIVEDIST'... done. update-fmtutil has updated the following file(s): /var/lib/texmf/fmtutil.cnf-DEBIAN /var/lib/texmf/fmtutil.cnf-TEXLIVEDIST If you want to activate the changes in the above file(s), you should run fmtutil-sys or fmtutil. 正在设置 libmro-compat-perl (0.13-1) ... 正在设置 libsub-exporter-perl (0.987-1) ... 正在设置 libeval-closure-perl (0.14-1) ... 正在设置 cm-super-minimal (0.3.4-15) ... 正在设置 libparams-validationcompiler-perl (0.30-1) ... 正在设置 libparams-classify-perl (0.015-1build2) ... 正在设置 texlive-latex-extra (2019.202000218-1) ... 正在设置 doxygen-latex (1.8.17-0ubuntu2) ... 正在设置 libmodule-runtime-perl (0.016-1) ... 正在设置 libdist-checkconflicts-perl (0.11-1) ... 正在设置 libmodule-implementation-perl (0.09-1) ... 正在设置 libpackage-stash-perl (0.38-1) ... 正在设置 libspecio-perl (0.45-1) ... 正在设置 libb-hooks-endofscope-perl (0.24-1) ... 正在设置 libnamespace-clean-perl (0.27-1) ... 正在设置 libnamespace-autoclean-perl (0.29-1) ... 正在设置 liblog-dispatch-perl (2.69-1) ... 正在处理用于 fontconfig (2.13.1-2ubuntu3) 的触发器 ... 正在处理用于 desktop-file-utils (0.24-1ubuntu3) 的触发器 ... 正在处理用于 mime-support (3.64ubuntu1) 的触发器 ... 正在处理用于 gnome-menus (3.36.0-1ubuntu1) 的触发器 ... 正在处理用于 libc-bin (2.31-0ubuntu9.18) 的触发器 ... 正在处理用于 man-db (2.9.1-1) 的触发器 ... 正在处理用于 tex-common (6.13) 的触发器 ... Running mktexlsr. This may take some time... done. Running updmap-sys. This may take some time... done. Running mktexlsr /var/lib/texmf ... done. Building format(s) --all. This may take some time... done. 正在处理用于 install-info (6.7.0.dfsg.2-5) 的触发器 ... abc@abc-virtual-machine:~/catkin_ws$ catkin_make_isolated Base path: /home/abc/catkin_ws Source space: /home/abc/catkin_ws/src Build space: /home/abc/catkin_ws/build_isolated Devel space: /home/abc/catkin_ws/devel_isolated Install space: /home/abc/catkin_ws/install_isolated ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ traversing 3 packages in topological order: ~~ - drone_control ~~ - mavros_px4_launch ~~ - px4 (plain cmake) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The packages or cmake arguments have changed, forcing cmake invocation ==> Processing catkin package: 'drone_control' ==> cmake /home/abc/catkin_ws/src/drone_control -DCATKIN_DEVEL_PREFIX=/home/abc/catkin_ws/devel_isolated/drone_control -DCMAKE_INSTALL_PREFIX=/home/abc/catkin_ws/install_isolated -G Unix Makefiles in '/home/abc/catkin_ws/build_isolated/drone_control' -- Using CATKIN_DEVEL_PREFIX: /home/abc/catkin_ws/devel_isolated/drone_control -- Using CMAKE_PREFIX_PATH: /opt/ros/noetic -- This workspace overlays: /opt/ros/noetic -- Found PythonInterp: /usr/bin/python3 (found suitable version "3.8.10", minimum required is "3") -- Using PYTHON_EXECUTABLE: /usr/bin/python3 -- Using Debian Python package layout -- Using empy: /usr/lib/python3/dist-packages/em.py -- Using CATKIN_ENABLE_TESTING: ON -- Call enable_testing() -- Using CATKIN_TEST_RESULTS_DIR: /home/abc/catkin_ws/build_isolated/drone_control/test_results -- Forcing gtest/gmock from source, though one was otherwise available. -- Found gtest sources under '/usr/src/googletest': gtests will be built -- Found gmock sources under '/usr/src/googletest': gmock will be built -- Found PythonInterp: /usr/bin/python3 (found version "3.8.10") -- Using Python nosetests: /usr/bin/nosetests3 -- catkin 0.8.12 -- BUILD_SHARED_LIBS is on -- Configuring done -- Generating done -- Build files have been written to: /home/abc/catkin_ws/build_isolated/drone_control ==> make -j2 -l2 in '/home/abc/catkin_ws/build_isolated/drone_control' <== Finished processing package [1 of 3]: 'drone_control' ==> Processing catkin package: 'mavros_px4_launch' ==> Building with env: '/home/abc/catkin_ws/devel_isolated/drone_control/env.sh' ==> cmake /home/abc/catkin_ws/src/mavros_px4_launch -DCATKIN_DEVEL_PREFIX=/home/abc/catkin_ws/devel_isolated/mavros_px4_launch -DCMAKE_INSTALL_PREFIX=/home/abc/catkin_ws/install_isolated -G Unix Makefiles in '/home/abc/catkin_ws/build_isolated/mavros_px4_launch' -- Using CATKIN_DEVEL_PREFIX: /home/abc/catkin_ws/devel_isolated/mavros_px4_launch -- Using CMAKE_PREFIX_PATH: /home/abc/catkin_ws/devel_isolated/drone_control;/opt/ros/noetic -- This workspace overlays: /home/abc/catkin_ws/devel_isolated/drone_control;/opt/ros/noetic -- Found PythonInterp: /usr/bin/python3 (found suitable version "3.8.10", minimum required is "3") -- Using PYTHON_EXECUTABLE: /usr/bin/python3 -- Using Debian Python package layout -- Using empy: /usr/lib/python3/dist-packages/em.py -- Using CATKIN_ENABLE_TESTING: ON -- Call enable_testing() -- Using CATKIN_TEST_RESULTS_DIR: /home/abc/catkin_ws/build_isolated/mavros_px4_launch/test_results -- Forcing gtest/gmock from source, though one was otherwise available. -- Found gtest sources under '/usr/src/googletest': gtests will be built -- Found gmock sources under '/usr/src/googletest': gmock will be built -- Found PythonInterp: /usr/bin/python3 (found version "3.8.10") -- Using Python nosetests: /usr/bin/nosetests3 -- catkin 0.8.12 -- BUILD_SHARED_LIBS is on -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy CMake Warning at /opt/ros/noetic/share/catkin/cmake/catkin_package.cmake:166 (message): catkin_package() DEPENDS on 'system_lib' but neither 'system_lib_INCLUDE_DIRS' nor 'system_lib_LIBRARIES' is defined. Call Stack (most recent call first): /opt/ros/noetic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_package) CMakeLists.txt:105 (catkin_package) -- Configuring done -- Generating done -- Build files have been written to: /home/abc/catkin_ws/build_isolated/mavros_px4_launch ==> make -j2 -l2 in '/home/abc/catkin_ws/build_isolated/mavros_px4_launch' <== Finished processing package [2 of 3]: 'mavros_px4_launch' ==> Processing plain cmake package: 'px4' ==> Building with env: '/home/abc/catkin_ws/devel_isolated/mavros_px4_launch/env.sh' ==> cmake /home/abc/catkin_ws/src/PX4-Autopilot -DCMAKE_INSTALL_PREFIX=/home/abc/catkin_ws/devel_isolated/px4 -G Unix Makefiles in '/home/abc/catkin_ws/build_isolated/px4/devel' -- PX4 version: v1.16.0-rc1-452-g78a2a3d0dd (1.16.0) -- PX4 config file: /home/abc/catkin_ws/src/PX4-Autopilot/boards/px4/sitl/default.px4board -- PLATFORM posix -- ROMFSROOT px4fmu_common -- TESTING y -- ETHERNET y -- ROOT_PATH . -- PARAM_FILE /fs/mtd_params -- PX4 config: px4_sitl_default -- PX4 platform: posix -- PX4 lockstep: enabled -- cmake build type: RelWithDebInfo -- ccache enabled (export CCACHE_DISABLE=1 to disable) -- Could NOT find gz-transport (missing: gz-transport_DIR) -- Gazebo simulation bridge module disabled: missing dependencies -- Could NOT find gz-transport (missing: gz-transport_DIR) -- Could NOT find gz-sim (missing: gz-sim_DIR) -- Could NOT find gz-sensors (missing: gz-sensors_DIR) -- Could NOT find gz-plugin (missing: gz-plugin_DIR) -- Found DART: /usr/include (Required is at least version "6.6") found components: dart -- Looking for ignition-math6 -- found version 6.15.1 -- Searching for dependencies of ignition-math6 -- Looking for OGRE... -- Found Ogre Ghadamon (1.9.0) -- Found OGRE: optimized;/usr/lib/x86_64-linux-gnu/libOgreMain.so;debug;/usr/lib/x86_64-linux-gnu/libOgreMain.so -- Looking for OGRE_Paging... -- Found OGRE_Paging: optimized;/usr/lib/x86_64-linux-gnu/libOgrePaging.so;debug;/usr/lib/x86_64-linux-gnu/libOgrePaging.so -- Looking for OGRE_Terrain... -- Found OGRE_Terrain: optimized;/usr/lib/x86_64-linux-gnu/libOgreTerrain.so;debug;/usr/lib/x86_64-linux-gnu/libOgreTerrain.so -- Looking for OGRE_Property... -- Found OGRE_Property: optimized;/usr/lib/x86_64-linux-gnu/libOgreProperty.so;debug;/usr/lib/x86_64-linux-gnu/libOgreProperty.so -- Looking for OGRE_RTShaderSystem... -- Found OGRE_RTShaderSystem: optimized;/usr/lib/x86_64-linux-gnu/libOgreRTShaderSystem.so;debug;/usr/lib/x86_64-linux-gnu/libOgreRTShaderSystem.so -- Looking for OGRE_Volume... -- Found OGRE_Volume: optimized;/usr/lib/x86_64-linux-gnu/libOgreVolume.so;debug;/usr/lib/x86_64-linux-gnu/libOgreVolume.so -- Looking for OGRE_Overlay... -- Found OGRE_Overlay: optimized;/usr/lib/x86_64-linux-gnu/libOgreOverlay.so;debug;/usr/lib/x86_64-linux-gnu/libOgreOverlay.so -- Looking for ignition-math6 -- found version 6.15.1 -- Looking for ignition-transport8 -- found version 8.5.1 -- Searching for dependencies of ignition-transport8 -- Config-file not installed for ZeroMQ -- checking for pkg-config -- Checking for module 'libzmq >= 4' -- Found libzmq , version 4.3.2 -- Checking for module 'uuid' -- Found uuid, version 2.34.0 -- Looking for ignition-msgs5 -- found version 5.11.1 -- Searching for dependencies of ignition-msgs5 -- Looking for ignition-math6 -- found version 6.15.1 -- Checking for module 'tinyxml2' -- Found tinyxml2, version 6.2.0 -- Looking for ignition-msgs5 -- found version 5.11.1 -- Looking for ignition-common3 -- found version 3.17.1 -- Searching for dependencies of ignition-common3 -- Looking for dlfcn.h - found -- Looking for libdl - found -- Searching for <ignition-common3> component [graphics] -- Looking for ignition-common3-graphics -- found version 3.17.1 -- Searching for dependencies of ignition-common3-graphics -- Looking for ignition-math6 -- found version 6.15.1 -- Looking for ignition-fuel_tools4 -- found version 4.9.2 -- Searching for dependencies of ignition-fuel_tools4 -- Checking for module 'jsoncpp' -- Found jsoncpp, version 1.7.4 -- Checking for module 'yaml-0.1' -- Found yaml-0.1, version 0.2.2 -- Checking for module 'libzip' -- Found libzip, version 1.5.1 -- Looking for ignition-common3 -- found version 3.17.1 -- Looking for ignition-math6 -- found version 6.15.1 -- Looking for ignition-msgs5 -- found version 5.11.1 -- Found gazebo-classic 11.15.1, including sitl_gazebo-classic simulator and gazebo-classic targets -- Could NOT find Java (missing: Java_JAVA_EXECUTABLE Java_JAR_EXECUTABLE Java_JAVAC_EXECUTABLE Java_JAVAH_EXECUTABLE Java_JAVADOC_EXECUTABLE) -- ROMFS: ROMFS/px4fmu_common CMake Error at CMakeLists.txt:478 (include): include could not find load file: doxygen Architecture: amd64 ==> CPACK_INSTALL_PREFIX = @DEB_INSTALL_PREFIX@ -- Configuring incomplete, errors occurred! See also "/home/abc/catkin_ws/build_isolated/px4/devel/CMakeFiles/CMakeOutput.log". See also "/home/abc/catkin_ws/build_isolated/px4/devel/CMakeFiles/CMakeError.log". <== Failed to process package 'px4': Command '['/home/abc/catkin_ws/devel_isolated/mavros_px4_launch/env.sh', 'cmake', '/home/abc/catkin_ws/src/PX4-Autopilot', '-DCMAKE_INSTALL_PREFIX=/home/abc/catkin_ws/devel_isolated/px4', '-G', 'Unix Makefiles']' returned non-zero exit status 1. Reproduce this error by running: ==> cd /home/abc/catkin_ws/build_isolated/px4 && /home/abc/catkin_ws/devel_isolated/mavros_px4_launch/env.sh cmake /home/abc/catkin_ws/src/PX4-Autopilot -DCMAKE_INSTALL_PREFIX=/home/abc/catkin_ws/devel_isolated/px4 -G 'Unix Makefiles' Command failed, exiting.
07-20
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值