开源库windows平台编译

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、varaint组件

c++14下们可以使用varaint第三方组件,现在需要去除varaint组件没使用std标准库里面的varaint,参考std::variant - cppreference.com。

将代码中的mpark::holds_alternative换成std::holds_alternative,

报错namespace "std" 没有成员 "holds_alternative"    poioverlay

将代码中的mpark::get换成std::get,报错

没有与参数列表匹配的 重载函数 "std::get" 实例

在头文件中增加#include,进入该文件,发现有个#if _HAS_CXX17宏定义

解决办法:

开源库windows平台编译_第1张图片

改成c++17,暂时不报错了。

二、报错找不到lib库

1、lib库介绍

.lib 文件、.dll 文件和 .sln 文件都是与 Microsoft Visual Studio 开发工具相关的文件。

.lib 文件(静态库文件):
.lib 文件是静态库文件,包含一组对象文件的二进制代码和符号信息,可以被编译器链接到可执行文件中。当编译器编译程序时,它将 .a 文件(Linux)或 .lib 文件(Windows)包含进最终的可执行文件中。这些静态文件在编译时会被直接链接到最终的程序中,并与最终程序一起分发,因此,它们的大小比动态库要大,但与动态库相比,静态库的使用更加方便和灵活。一些常见的静态库文件包括:libc.lib、libm.lib 等。

生成 .lib 文件:

在 Visual Studio 中,生成 .lib 文件的方法如下:

创建一个新的 Win32 库项目;
在设置中指定生成的库类型为静态库;
将需要编译为库的源文件添加到项目中;
编译项目,生成 .lib 文件。


.dll 文件(动态库文件):
.dll 文件是动态链接库文件,同样包含一组对象文件的二进制代码和符号信息,但它们不会被直接链接到最终可执行文件中,而是在程序运行时被动态地加载到内存中,并在需要时被执行。相较于静态库,它占用更小的内存空间,因为在运行时只需要加载一次,同时也使得程序更新更灵活,因为只需要替换 .dll 文件即可更新代码。一些常见的 .dll 文件包括:msvcrt.dll、kernel32.dll 等。

生成 .dll 文件:

在 Visual Studio 中,生成 .dll 文件的方法如下:

创建新的 Win32 DLL 项目;
在设置中指定生成的库类型为动态链接库;
将需要编译为库的源文件添加到项目中;
编译项目,生成 .dll 文件。


.sln 文件(解决方案文件):
.sln 文件是 Visual Studio 解决方案文件,包含了多个项目,以及这些项目之间的关系和配置信息。一个解决方案可以包含多个项目和文件,这些项目和文件共同组成一个应用程序。在 Visual Studio 中打开 .sln 文件,将自动打开关联的工程文件,并将它们组合成已配置和连接的整体。

生成 .sln 文件:

在 Visual Studio 中,一个解决方案可以包含多个项目,可以在创建一个新的解决方案时添加多个项目,或者将一个或多个项目添加到现有的解决方案中。可以在 Visual Studio 的“文件”菜单中选择“新建项目”来创建一个新的项目,之后可以在 Visual Studio 的“文件”菜单中选择“新建解决方案”或“添加现有项目”来创建或添加项目并生成 .sln 文件。

总之,.lib 文件用于静态库,.dll 文件用于动态库,.sln 文件则是 Visual Studio 的解决方案文件。在 Visual Studio 中使用不同的工具和方法,可以方便地生成和使用这些关联文件。

2、windows环境下编译lib静态库

本来百度以为要用vs编译,然后打电话给新卓,他说可以用cmake,于是有了个解决方向。

2.1安装cmake

进入下载网址:Download CMake

这个时候我突然想到,如果真的是这样编译出来的,那当时collada2gltf我怎么没有印象编译过啊,然后COLLADA2GLTF里面还有挺多文件,一看就不是我编译出来的。真是很奇怪,然后我就以为是vs会自动编译呢。然后找到lib库文件,把vs工程重新编译,并没有看到lib文件刷新日期。

全局搜索collada2gltf文件,最后发现他是在一个文件夹里,文件夹是由zip压缩包解压出来的,我就查找跟强哥的聊天记录。没找到,然后 想到会不是是云盘发过来的,查了下聊天记录,确实是云盘发过来的。所以我现在还是要编译一下第三方开源组件lib库。

安装好cmake后参考这个教程:使用CMake制作lib文件-百度经验

2.2解决报错:
2.2.1报错

报错:Error inconfiguration process,preject files may be invalid

用这个办法解决:解决方案-CMake error: error in configuration process, project files may be invalid(Windows&VS可参考)

没有好,继续解决

2.2.2报错:

CMake Error: The source directory "G:/updateLib/boost/boost-1.79.0/boost-1.79.0/libs" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.

Boost C++ Libraries

boost库分linux和windows包,下载windows包

开源库windows平台编译_第2张图片

然后突然发现这个

开源库windows平台编译_第3张图片

在等下载好的过程中,突然看到这个帖子,里面下载下来的包里面就有CMakeList.txt文件

C++开源库libharu编译使用--PDF开源库 - 哔哩哔哩

最后按照别人的帖子验证了cmake安装成功了,验证过程参考的是bilibili的帖子。2.2的报错是因为安装包里面就是没有CMakelist.txt文件。

3、验证cmake安装成功


三、编译boost库

哎,搞了大半天,问了兵朋,给我推了这个帖子,boost入门指南(windows)_boost b2怎么用-CSDN博客

这个帖子没用cmake编译,结合boost源码包, 没有CMakeList.txt文件,用的是bootstrap.bat

开源库windows平台编译_第4张图片

打开终端

开源库windows平台编译_第5张图片

 执行bootstrap

开源库windows平台编译_第6张图片

 生成b2.exe文件

开源库windows平台编译_第7张图片

执行.\b2

开源库windows平台编译_第8张图片

 显示如下信息,编译成功

开源库windows平台编译_第9张图片

文件在红框路径中

开源库windows平台编译_第10张图片

成功!

四、编译gdal库

这个也是验证cmake是否安装成功

开源库windows平台编译_第11张图片

百度报错:Could NOT find Python (missing: Python_NumPy_INCLUDE_DIRS NumPy

vcpkg doesn't provide python numpy component · Issue #27996 · microsoft/vcpkg · GitHub

 开源库windows平台编译_第12张图片

帖子里是这样,查看自己的pip3 list,

开源库windows平台编译_第13张图片

感觉是缺少numpy,安装numpy,pip install numpy

https://download.ihsdus.cn/down/2022down/7/14/numpy.rar?timestamp=654b7790&auth_key=8754bddea281abc90e53121461c9e46c

 上面这个链接下载numpy.zip压缩包,解压进入setup.py路径,

开源库windows平台编译_第14张图片

安装成功

开源库windows平台编译_第15张图片

 再次执行cmake,这时候报错

开源库windows平台编译_第16张图片

感觉好像没啥用啊。。。 = =

所以看来还是要百度一下gdal编译lib库文件 


Win11下 基于VS2022编译GDAL库_gdal依赖库_GIS子枫的博客-CSDN博客

这个帖子好像说的比较明白啊 

五、freetype开源库

GitHub - ubawurinna/freetype-windows-binaries at v2.13.2

这个开源库就把lib库文件编译好了,这多爽啊

 开源库windows平台编译_第17张图片

五、编译protobuf库

使用时protobuf3.21.9版本的源码进行编译,https://open.codehub.huawei.com/OpenSourceCenter/protocolbuffers/protobuf/files?ref=v3.21.9

在服务器解压,发现有antogen.sh 文件,

按照下面下面的顺序执行

./autogen.sh
//多出一个configure文件
./configure
make

实际截图如下:

root@0002:~/data# cd protobuf
root@0002:~/data/protobuf# ll
total 624
drwxr-xr-x 24 root root   4096 Nov 10 14:10 ./
drwxr-xr-x 17 root root   4096 Nov 10 14:10 ../
-rw-r--r--  1 root root   1449 Nov 10 14:10 appveyor.bat
-rw-r--r--  1 root root   1166 Nov 10 14:10 appveyor.yml
-rwxr-xr-x  1 root root   1210 Nov 10 14:10 autogen.sh*
-rw-r--r--  1 root root   2100 Nov 10 14:10 WORKSPACE
......
......
root@0002:~/data/protobuf# ./autogen.sh
+ test -d third_party/googletest
+ mkdir -p third_party/googletest/m4
+ autoreconf -f -i -Wall,no-obsolete
libtoolize: putting auxiliary files in '.'.
......
......
+ rm -rf autom4te.cache config.h.in~
+ exit 0
root@0002:~/data/protobuf# ll
total 1984
drwxr-xr-x 24 root root   4096 Nov 10 14:10 ./
drwxr-xr-x 17 root root   4096 Nov 10 14:10 ../
-rw-r--r--  1 root root  46198 Nov 10 14:10 aclocal.m4
-rw-r--r--  1 root root   3846 Nov 10 14:10 config.h.in
-rwxr-xr-x  1 root root  36144 Nov 10 14:10 config.sub*
-rwxr-xr-x  1 root root 727999 Nov 10 14:10 configure*
-rw-r--r--  1 root root   8083 Nov 10 14:10 configure.ac
......
-rw-r--r--  1 root root   2100 Nov 10 14:10 WORKSPACE
root@0002:~/data/protobuf# ./configure
checking whether to enable maintainer-specific portions of Makefiles... yes
checking build system type... x86_64-pc-linux-gnu
......
checking the location of hash_map... 
checking whether -llog is needed... no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: executing libtool commands
=== configuring in third_party/googletest (/root/data/protobuf/third_party/googletest)
configure: WARNING: no configuration information is in third_party/googletest
root@0002:~/data/protobuf# make
make  all-recursive
make[1]: Entering directory '/root/data/protobuf'
Making all in .
make[2]: Entering directory '/root/data/protobuf'
make[2]: Leaving directory '/root/data/protobuf'
Making all in src
make[2]: Entering directory '/root/data/protobuf/src'
  CXX      google/protobuf/any_lite.lo
  CXX      google/protobuf/arena.lo
  CXX      google/protobuf/arenastring.lo
  CXX      google/protobuf/arenaz_sampler.lo
  CXX      google/protobuf/extension_set.lo

make install显示log

root@0002:~/data/protobuf# make install
Making install in .
make[1]: Entering directory '/root/data/protobuf'
make[2]: Entering directory '/root/data/protobuf'
make[2]: Nothing to be done for 'install-exec-am'.
 /bin/mkdir -p '/usr/local/lib/pkgconfig'
 /usr/bin/install -c -m 644 protobuf.pc protobuf-lite.pc '/usr/local/lib/pkgconfig'
make[2]: Leaving directory '/root/data/protobuf'
make[1]: Leaving directory '/root/data/protobuf'
Making install in src
make[1]: Entering directory '/root/data/protobuf/src'
make[2]: Entering directory '/root/data/protobuf/src'
 /bin/mkdir -p '/usr/local/lib'
 /bin/bash ../libtool   --mode=install /usr/bin/install -c   libprotobuf-lite.la libprotobuf.la libprotoc.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libprotobuf-lite.so.32.0.9 /usr/local/lib/libprotobuf-lite.so.32.0.9
libtool: install: (cd /usr/local/lib && { ln -s -f libprotobuf-lite.so.32.0.9 libprotobuf-lite.so.32 || { rm -f libprotobuf-lite.so.32 && ln -s libprotobuf-lite.so.32.0.9 libprotobuf-lite.so.32; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libprotobuf-lite.so.32.0.9 libprotobuf-lite.so || { rm -f libprotobuf-lite.so && ln -s libprotobuf-lite.so.32.0.9 libprotobuf-lite.so; }; })
libtool: install: /usr/bin/install -c .libs/libprotobuf-lite.lai /usr/local/lib/libprotobuf-lite.la
libtool: install: /usr/bin/install -c .libs/libprotobuf.so.32.0.9 /usr/local/lib/libprotobuf.so.32.0.9
libtool: install: (cd /usr/local/lib && { ln -s -f libprotobuf.so.32.0.9 libprotobuf.so.32 || { rm -f libprotobuf.so.32 && ln -s libprotobuf.so.32.0.9 libprotobuf.so.32; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libprotobuf.so.32.0.9 libprotobuf.so || { rm -f libprotobuf.so && ln -s libprotobuf.so.32.0.9 libprotobuf.so; }; })
libtool: install: /usr/bin/install -c .libs/libprotobuf.lai /usr/local/lib/libprotobuf.la
libtool: warning: relinking 'libprotoc.la'
libtool: install: (cd /root/data/protobuf/src; /bin/bash "/root/data/protobuf/libtool"  --silent --tag CXX --mode=relink g++ -pthread -DHAVE_PTHREAD=1 -DHAVE_ZLIB=1 -Wall -Wno-sign-compare -O2 -g -std=c++11 -DNDEBUG -version-info 32:9:0 -export-dynamic -no-undefined -Wl,--version-script=./libprotoc.map -o libprotoc.la -rpath /usr/local/lib google/protobuf/compiler/code_generator.lo google/protobuf/compiler/command_line_interface.lo google/protobuf/compiler/cpp/enum.lo google/protobuf/compiler/cpp/enum_field.lo google/protobuf/compiler/cpp/extension.lo google/protobuf/compiler/cpp/field.lo google/protobuf/compiler/cpp/file.lo google/protobuf/compiler/cpp/generator.lo google/protobuf/compiler/cpp/helpers.lo google/protobuf/compiler/cpp/map_field.lo google/protobuf/compiler/cpp/message.lo google/protobuf/compiler/cpp/message_field.lo google/protobuf/compiler/cpp/padding_optimizer.lo google/protobuf/compiler/cpp/parse_function_generator.lo google/protobuf/compiler/cpp/primitive_field.lo google/protobuf/compiler/cpp/service.lo google/protobuf/compiler/cpp/string_field.lo google/protobuf/compiler/csharp/csharp_doc_comment.lo google/protobuf/compiler/csharp/csharp_enum.lo google/protobuf/compiler/csharp/csharp_enum_field.lo google/protobuf/compiler/csharp/csharp_field_base.lo google/protobuf/compiler/csharp/csharp_generator.lo google/protobuf/compiler/csharp/csharp_helpers.lo google/protobuf/compiler/csharp/csharp_map_field.lo google/protobuf/compiler/csharp/csharp_message.lo google/protobuf/compiler/csharp/csharp_message_field.lo google/protobuf/compiler/csharp/csharp_primitive_field.lo google/protobuf/compiler/csharp/csharp_reflection_class.lo google/protobuf/compiler/csharp/csharp_repeated_enum_field.lo google/protobuf/compiler/csharp/csharp_repeated_message_field.lo google/protobuf/compiler/csharp/csharp_repeated_primitive_field.lo google/protobuf/compiler/csharp/csharp_source_generator_base.lo google/protobuf/compiler/csharp/csharp_wrapper_field.lo google/protobuf/compiler/java/context.lo google/protobuf/compiler/java/doc_comment.lo google/protobuf/compiler/java/enum.lo google/protobuf/compiler/java/enum_field.lo google/protobuf/compiler/java/enum_field_lite.lo google/protobuf/compiler/java/enum_lite.lo google/protobuf/compiler/java/extension.lo google/protobuf/compiler/java/extension_lite.lo google/protobuf/compiler/java/field.lo google/protobuf/compiler/java/file.lo google/protobuf/compiler/java/generator.lo google/protobuf/compiler/java/generator_factory.lo google/protobuf/compiler/java/helpers.lo google/protobuf/compiler/java/kotlin_generator.lo google/protobuf/compiler/java/map_field.lo google/protobuf/compiler/java/map_field_lite.lo google/protobuf/compiler/java/message.lo google/protobuf/compiler/java/message_builder.lo google/protobuf/compiler/java/message_builder_lite.lo google/protobuf/compiler/java/message_field.lo google/protobuf/compiler/java/message_field_lite.lo google/protobuf/compiler/java/message_lite.lo google/protobuf/compiler/java/name_resolver.lo google/protobuf/compiler/java/primitive_field.lo google/protobuf/compiler/java/primitive_field_lite.lo google/protobuf/compiler/java/service.lo google/protobuf/compiler/java/shared_code_generator.lo google/protobuf/compiler/java/string_field.lo google/protobuf/compiler/java/string_field_lite.lo google/protobuf/compiler/objectivec/objectivec_enum.lo google/protobuf/compiler/objectivec/objectivec_enum_field.lo google/protobuf/compiler/objectivec/objectivec_extension.lo google/protobuf/compiler/objectivec/objectivec_field.lo google/protobuf/compiler/objectivec/objectivec_file.lo google/protobuf/compiler/objectivec/objectivec_generator.lo google/protobuf/compiler/objectivec/objectivec_helpers.lo google/protobuf/compiler/objectivec/objectivec_map_field.lo google/protobuf/compiler/objectivec/objectivec_message.lo google/protobuf/compiler/objectivec/objectivec_message_field.lo google/protobuf/compiler/objectivec/objectivec_oneof.lo google/protobuf/compiler/objectivec/objectivec_primitive_field.lo google/protobuf/compiler/php/php_generator.lo google/protobuf/compiler/plugin.lo google/protobuf/compiler/plugin.pb.lo google/protobuf/compiler/python/generator.lo google/protobuf/compiler/python/helpers.lo google/protobuf/compiler/python/pyi_generator.lo google/protobuf/compiler/ruby/ruby_generator.lo google/protobuf/compiler/subprocess.lo google/protobuf/compiler/zip_writer.lo -lpthread libprotobuf.la -lz )
libtool: install: /usr/bin/install -c .libs/libprotoc.so.32.0.9T /usr/local/lib/libprotoc.so.32.0.9
libtool: install: (cd /usr/local/lib && { ln -s -f libprotoc.so.32.0.9 libprotoc.so.32 || { rm -f libprotoc.so.32 && ln -s libprotoc.so.32.0.9 libprotoc.so.32; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libprotoc.so.32.0.9 libprotoc.so || { rm -f libprotoc.so && ln -s libprotoc.so.32.0.9 libprotoc.so; }; })
libtool: install: /usr/bin/install -c .libs/libprotoc.lai /usr/local/lib/libprotoc.la
libtool: install: /usr/bin/install -c .libs/libprotobuf-lite.a /usr/local/lib/libprotobuf-lite.a
libtool: install: chmod 644 /usr/local/lib/libprotobuf-lite.a
libtool: install: ranlib /usr/local/lib/libprotobuf-lite.a
libtool: install: /usr/bin/install -c .libs/libprotobuf.a /usr/local/lib/libprotobuf.a
libtool: install: chmod 644 /usr/local/lib/libprotobuf.a
libtool: install: ranlib /usr/local/lib/libprotobuf.a
libtool: install: /usr/bin/install -c .libs/libprotoc.a /usr/local/lib/libprotoc.a
libtool: install: chmod 644 /usr/local/lib/libprotoc.a
libtool: install: ranlib /usr/local/lib/libprotoc.a
libtool: finish: PATH="/usr/local/gcc/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the 'LD_RUN_PATH' environment variable
     during linking
   - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
 /bin/mkdir -p '/usr/local/bin'
  /bin/bash ../libtool   --mode=install /usr/bin/install -c protoc '/usr/local/bin'
libtool: install: /usr/bin/install -c .libs/protoc /usr/local/bin/protoc
 /bin/mkdir -p '/usr/local/include'
 /bin/mkdir -p '/usr/local/include/google/protobuf'
 /usr/bin/install -c -m 644  google/protobuf/any.proto google/protobuf/api.proto google/protobuf/descriptor.proto google/protobuf/duration.proto google/protobuf/empty.proto google/protobuf/field_mask.proto google/protobuf/source_context.proto google/protobuf/struct.proto google/protobuf/timestamp.proto google/protobuf/type.proto google/protobuf/wrappers.proto '/usr/local/include/google/protobuf'
 /bin/mkdir -p '/usr/local/include/google/protobuf/compiler'
 /usr/bin/install -c -m 644  google/protobuf/compiler/plugin.proto '/usr/local/include/google/protobuf/compiler'
 /bin/mkdir -p '/usr/local/include'
 /bin/mkdir -p '/usr/local/include/google/protobuf'
 /usr/bin/install -c -m 644  google/protobuf/any.h google/protobuf/any.pb.h google/protobuf/api.pb.h google/protobuf/arena.h google/protobuf/arena_impl.h google/protobuf/arenastring.h google/protobuf/arenaz_sampler.h google/protobuf/descriptor.h google/protobuf/descriptor.pb.h google/protobuf/descriptor_database.h google/protobuf/duration.pb.h google/protobuf/dynamic_message.h google/protobuf/empty.pb.h google/protobuf/endian.h google/protobuf/explicitly_constructed.h google/protobuf/extension_set.h google/protobuf/extension_set_inl.h google/protobuf/field_access_listener.h google/protobuf/field_mask.pb.h google/protobuf/generated_enum_reflection.h google/protobuf/generated_enum_util.h google/protobuf/generated_message_bases.h google/protobuf/generated_message_reflection.h google/protobuf/generated_message_tctable_decl.h google/protobuf/generated_message_tctable_impl.h google/protobuf/generated_message_util.h google/protobuf/has_bits.h google/protobuf/implicit_weak_message.h google/protobuf/inlined_string_field.h google/protobuf/map.h google/protobuf/map_entry.h google/protobuf/map_entry_lite.h google/protobuf/map_field.h google/protobuf/map_field_inl.h google/protobuf/map_field_lite.h google/protobuf/map_type_handler.h google/protobuf/message.h google/protobuf/message_lite.h google/protobuf/metadata.h google/protobuf/metadata_lite.h '/usr/local/include/google/protobuf'
 /bin/mkdir -p '/usr/local/include/google/protobuf/compiler/java'
 /usr/bin/install -c -m 644  google/protobuf/compiler/java/generator.h google/protobuf/compiler/java/java_generator.h google/protobuf/compiler/java/kotlin_generator.h google/protobuf/compiler/java/names.h '/usr/local/include/google/protobuf/compiler/java'
 /bin/mkdir -p '/usr/local/include/google/protobuf/compiler/cpp'
 /usr/bin/install -c -m 644  google/protobuf/compiler/cpp/cpp_generator.h google/protobuf/compiler/cpp/file.h google/protobuf/compiler/cpp/generator.h google/protobuf/compiler/cpp/helpers.h google/protobuf/compiler/cpp/names.h '/usr/local/include/google/protobuf/compiler/cpp'
 /bin/mkdir -p '/usr/local/include/google/protobuf/compiler/python'
 /usr/bin/install -c -m 644  google/protobuf/compiler/python/generator.h google/protobuf/compiler/python/pyi_generator.h google/protobuf/compiler/python/python_generator.h '/usr/local/include/google/protobuf/compiler/python'
 /bin/mkdir -p '/usr/local/include/google/protobuf'
 /usr/bin/install -c -m 644  google/protobuf/parse_context.h google/protobuf/port.h google/protobuf/port_def.inc google/protobuf/port_undef.inc google/protobuf/reflection.h google/protobuf/reflection_internal.h google/protobuf/reflection_ops.h google/protobuf/repeated_field.h google/protobuf/repeated_ptr_field.h google/protobuf/service.h google/protobuf/source_context.pb.h google/protobuf/struct.pb.h google/protobuf/text_format.h google/protobuf/timestamp.pb.h google/protobuf/type.pb.h google/protobuf/unknown_field_set.h google/protobuf/wire_format.h google/protobuf/wire_format_lite.h google/protobuf/wrappers.pb.h '/usr/local/include/google/protobuf'
 /bin/mkdir -p '/usr/local/include/google/protobuf/stubs'
 /usr/bin/install -c -m 644  google/protobuf/stubs/bytestream.h google/protobuf/stubs/callback.h google/protobuf/stubs/casts.h google/protobuf/stubs/common.h google/protobuf/stubs/hash.h google/protobuf/stubs/logging.h google/protobuf/stubs/macros.h google/protobuf/stubs/map_util.h google/protobuf/stubs/mutex.h google/protobuf/stubs/once.h google/protobuf/stubs/platform_macros.h google/protobuf/stubs/port.h google/protobuf/stubs/status.h google/protobuf/stubs/stl_util.h google/protobuf/stubs/stringpiece.h google/protobuf/stubs/strutil.h google/protobuf/stubs/template_util.h '/usr/local/include/google/protobuf/stubs'
 /bin/mkdir -p '/usr/local/include/google/protobuf/util'
 /usr/bin/install -c -m 644  google/protobuf/util/delimited_message_util.h google/protobuf/util/field_comparator.h google/protobuf/util/field_mask_util.h google/protobuf/util/json_util.h google/protobuf/util/message_differencer.h google/protobuf/util/time_util.h google/protobuf/util/type_resolver.h google/protobuf/util/type_resolver_util.h '/usr/local/include/google/protobuf/util'
 /bin/mkdir -p '/usr/local/include/google/protobuf/compiler/php'
 /usr/bin/install -c -m 644  google/protobuf/compiler/php/php_generator.h '/usr/local/include/google/protobuf/compiler/php'
 /bin/mkdir -p '/usr/local/include/google/protobuf/compiler'
 /usr/bin/install -c -m 644  google/protobuf/compiler/code_generator.h google/protobuf/compiler/command_line_interface.h google/protobuf/compiler/importer.h google/protobuf/compiler/parser.h google/protobuf/compiler/plugin.h google/protobuf/compiler/plugin.pb.h '/usr/local/include/google/protobuf/compiler'
 /bin/mkdir -p '/usr/local/include/google/protobuf/compiler/ruby'
 /usr/bin/install -c -m 644  google/protobuf/compiler/ruby/ruby_generator.h '/usr/local/include/google/protobuf/compiler/ruby'
 /bin/mkdir -p '/usr/local/include/google/protobuf/io'
 /usr/bin/install -c -m 644  google/protobuf/io/coded_stream.h google/protobuf/io/gzip_stream.h google/protobuf/io/io_win32.h google/protobuf/io/printer.h google/protobuf/io/strtod.h google/protobuf/io/tokenizer.h google/protobuf/io/zero_copy_stream.h google/protobuf/io/zero_copy_stream_impl.h google/protobuf/io/zero_copy_stream_impl_lite.h '/usr/local/include/google/protobuf/io'
 /bin/mkdir -p '/usr/local/include/google/protobuf/compiler/csharp'
 /usr/bin/install -c -m 644  google/protobuf/compiler/csharp/csharp_doc_comment.h google/protobuf/compiler/csharp/csharp_generator.h google/protobuf/compiler/csharp/csharp_names.h google/protobuf/compiler/csharp/csharp_options.h '/usr/local/include/google/protobuf/compiler/csharp'
 /bin/mkdir -p '/usr/local/include/google/protobuf/compiler/objectivec'
 /usr/bin/install -c -m 644  google/protobuf/compiler/objectivec/objectivec_generator.h google/protobuf/compiler/objectivec/objectivec_helpers.h '/usr/local/include/google/protobuf/compiler/objectivec'
make[2]: Leaving directory '/root/data/protobuf/src'
make[1]: Leaving directory '/root/data/protobuf/src'

编译结束。

关于./configure,别人的帖子是这样介绍的

#第一步执行autogen.sh,

但如果下载的是具体某一门语言,则不需要执行这一步 ./autogen.sh

#第二步执行configure,

有两种执行方式,任选其一即可,如下:

#1.protobuf默认安装在 /usr/local 目录,lib、bin都是分散的 ./configure

#2.修改安装目录,同一安装在 /usr/local/protobuf 下 ./configure --prefix=/usr/local/protobuf 

查看是否安装成功,protoc --vision

以上就是安装的过程 

下面是创建.pp.h和.pp.c文件,至于这两个文件是什么,其实我也不清楚,还涉及到一个proto文件的编写,也不是我写的,目前我的任务是把.pp.h和.pp.c文件编出来。

进入protobuf/src文件中,有一个protoc文件,创建TEST文件。

开源库windows平台编译_第18张图片

开源库windows平台编译_第19张图片

执行指令

root@0002:~/data/protobuf/src# protoc --proto_path=../TEST --cpp_out=../TEST/ ../TEST/TrafficRenderData.proto
//protoc执行器
//--proto_path  proto文件路径
// --cpp_out    输出文件
//最后的一个参数指出proto文件的路径

执行指令后查看./TETS路径,

开源库windows平台编译_第20张图片

成功!


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(C++,linux,c++)